블로그 이미지
안녕하세요~ iolate(a.k.a. isho) 의 블로그 입니다~! iolate

카테고리

분류 전체보기 (184)
끄적끄적 (6)
Server, Cloud (11)
Linux, Ubuntu (29)
개발개발 (47)
Mac, iOS (41)
Embedded (20)
NAS (1)
Web (5)
Network (3)
Review (12)
기타 (9)
비공개글 (0)
Total715,681
Today20
Yesterday248

'UIWebview'에 해당되는 글 1건

  1. 2013.02.17 UIWebView 사이즈에 페이지 너비 맞추기 (5)

webView 를 얹이고 그 안에 페이지를 띄웠는데 중앙으로 제대로 배치가 안되는 문제가 발생..

(폰 용 페이지를 패드에서도 보는 거라 html 로 만든 테이블뷰가 가운데로 와야 정상임)


난 처음에 뷰 프레임이나 autoresizemask 가 제대로 안잡힌 건줄 알았는데 그게 아니더라..


원인은 meta 태그의 viewport 항목.


width=device-width 이렇게 넘겨주는데 말그대로 device width 다 보니

웹뷰의 크기와는 상관없이 기기의 너비가 반환되어서 들어감.


따라서 사파리라 던가 풀스크린 웹뷰의 경우에는 상관없지만 내가 한것 처럼 화면의 일부분에만 웹뷰를 띄우고

사용할 시에는 전체 너비를 제대로 못 받아 오는 문제가 생겼다.


해결법은 의외로 간단.


webview 의 delegate 지정 후 delegate 에서


- (void)webViewDidFinishLoad:(UIWebView *)webView {

    [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.querySelector('meta[name=viewport]').setAttribute('content', 'width=%d;', false); ", (int)webView.frame.size.width]];

}


이렇게 해주면 된다.

기기의 화면이 회전되는 등 너비 값이 변하였을때도 바로바로 잘 적용됨.

Posted by iolate

댓글을 달아 주세요

  1. 2013.04.10 10:06  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • 2013.04.10 22:38 신고 BlogIcon iolate  댓글주소  수정/삭제

      저 코드 자체가 완료된 시점에서 viewport 값을 바꿔주는 거라서 어쩔수 없습니다.

      html 로딩중에 실시간으로 체크할수 있는게 있는지 찾아보시고(없을것 같지만.)
      아니면 로딩이 완료되고 나면 웹뷰를 보이게 하는것도 한 방법이겠지요.

      처음 띄울때 웹뷰를 숨기거나 안보이게 했다가 위 코드에서 다시 보이게 해주면 됩니다.

  2. 2015.05.21 18:47 BlogIcon 박영민  댓글주소  수정/삭제  댓글쓰기

    오늘 이문제때문에 고민하다가 덕분에 해결했습니다. 윗분의 질문은 모르겠으나, 아마도 다 로딩하기전에 스크롤 되는 문제 떄문에 그런것이라면 커버뷰를 만드는것도 좋을듯합니다. 보이지 않는 뷰를 띄워서 DidFinish 될때 HIDE 시키면 될것같습니다. 감사합니다.

  3. 2015.07.02 13:23 김성태  댓글주소  수정/삭제  댓글쓰기

    감사합니다!

  4. 2016.02.03 18:00 이승준  댓글주소  수정/삭제  댓글쓰기

    정말 감사합니다.
    몇일째 고생했는데 한번에 풀렸네요 ㅠㅜ 사랑합니다..정말..

최근에 달린 댓글

최근에 받은 트랙백

글 보관함