본문으로 바로가기
반응형

안드로이드 개발자로 시작해서 iOS 개발을 시작하니 비슷한 부분도 있지만 역시 다른 부분이 더 큰거 같다.


웹뷰 같은 경우에도 가로크기는 대부분 화면크기를 사용할테고(이건 고정이니 고칠일이 없고) 가끔 세로크기를 컨텐츠 크기와 같게 해야하는 부분이 생긴다(스크롤을 적용해 웹뷰 하단에 툴바를 넣는다던지...)


안드로이드 같은 경우에는 Webview의 height 속성에 warp_content를 넣는걸로 해결이 된다(권장하는 방법은 아니라고 경고메세지가 뜨지만 그렇다고 딱히 오류가 발생된적은 없었다)


문제는 아이폰이다. 아이폰은 이런 부분이 아예없어서 수동으로 해줘야한다.


웹콘텐츠 같은 경우에는 각종 줌, 비율, 가로크기에 따라서도 세로크기가 충분히 달라질 수 있다.


따라서 웹콘텐츠의 세로크기를 측정하려면 웹콘텐츠를 로딩 완료 후에 측정 후 웹뷰의 크기를 조절하는 방법밖에는 없다.


func webViewDidFinishLoad(webView: UIWebView) {
        
        webView.translatesAutoresizingMaskIntoConstraints = true;
        scrollView.translatesAutoresizingMaskIntoConstraints = true;
        
        var frame:CGRect = webView.frame
        let height:NSString! = webView.stringByEvaluatingJavaScriptFromString("document.height !== undefined ? document.height : document.body.offsetHeight")
        let heightInFloat = height.floatValue // convert to float
        let heightINCGFloat = CGFloat(heightInFloat)
        frame.size.width = UIScreen.mainScreen().bounds.width
        frame.size.height = heightINCGFloat + 150 // set heigh
        webView.frame = frame // set frame
        webView.scrollView.contentSize.height = webView.frame.height
        
        self.scrollView.contentSize = CGSizeMake(webView.frame.width, webView.frame.height + 200)
}


웹컨텐츠의 높이값을 구하기 위해 자바스크립트를 사용하였다.

마지막의 스크롤 뷰의 컨텐츠 사이즈 추가 값은 해당 앱에 맞게 수정하면 된다.

반응형