UIScrollView 내부의 UIWebView를 확대하려면 어떻게해야합니까?


132

나는이 UIWebView돌며있는 UIScrollView(있는 ScrollView 다른 구성 요소를 포함)를

Interface Builder 또는 Programmatic 에서 멀티 터치를 활성화하려고 UIWebView했지만 여전히 HTML을 확대 할 수 없습니다. UIScrollView및 에서 확대를 모두 처리해야 UIWebView합니까? 아니면 내가 설정하지 않은 것이 있습니까?


2
scalesPageToFit = YES작동하지만 기본 콘텐츠 크기가 변경 됩니다. 내 답변을 보면 이것이 도움이 될 것입니다.
iPatel

답변:


348

UIWebView에서 핀치 및 확대 / 축소가 작동하려면 scalesPageToFit = YES를 설정해야합니다.


2
내 페이지가보기에 맞게 축소되는 것을 제외하고는 좋습니다. 코드로 HTML 페이지를 작성하여 표시하고 이전 크기를 유지하고 싶지만 사용자가 핀치 확대 / 축소로 확대 할 수 있도록 허용
Dan F

33
HTML 문서 헤드에 다음 메타 태그를 추가하십시오. <meta name = 'viewport'content = 'initial-scale = 1.0, maximum-scale = 10.0'/>
vocaro

2
외부 웹 사이트에서 동일한 작업을 수행하려면 어떻게해야합니까? 즉, 초기 줌을 설정하면 그 후에 사용자 줌이 활성화됩니다.
William Jockusch

안녕, 그것은 모두 페이징, 확대 / 축소 등 잘 작동합니다 ...하지만 그 안에 한 가지 문제가 있습니다. 내 앱이 두 방향 (세로 및 가로)으로 작동합니다. 이제 세로로 2-3 페이지를 스 와이프해야 다음 페이지로 이동할 수 있습니다. 그러나 풍경에서는 잘 작동합니다. scrollview 내부에서 webview를 가져 왔고 scrollview에 페이징이 있습니다. 그러나 스크롤을 스 와이프하여 다음 페이지로 이동하려고 할 때 다음 페이지로 이동하려면 스크롤을 2 ~ 3 번 스 와이프해야합니다 (세로 모드). 동일에 관한 아이디어. 도와 주셔서 감사합니다.
Nishant B

완벽한 답변 ... 감사합니다
AL̲̳I

12

위의 내용과 다음 사항을 모두 수행해야합니다. 기본보기에서 웹보기가 있었지만 작동하지 않았습니다.

  1. 위와 같이 먼저 UIScrollView를 기본보기에 배치 한 다음 웹보기를 스크롤보기에 배치해야합니다.
  2. 위와 같이 <UIScrollViewDelegate>뷰 컨트롤러에서 구현 하고 스크롤 뷰 대리자를 Interface Builder의 뷰 컨트롤러로 드래그하고 viewForZoomingInScrollView메서드를 구현하십시오 . UIScrollView에 대한 포인터를 반환해야합니다 (myScrollView를 반환).
  3. 웹보기와 스크롤보기 모두에 대한 IBOutlet 속성을 만들었습니다-NIB에서보기 컨트롤러에 연결하십시오.
  4. 스크롤보기에서 속성 관리자로 이동하여 최대 및 최소 줌 배율을 설정하십시오 (0.5에서 5.0으로 설정하면 잘 작동합니다).
  5. 웹보기의 속성 관리자에서 :
  6. 웹보기 섹션에서 페이지 비율에 맞게 조정을 선택하십시오.
  7. 보기 섹션에서 모드, "맨 위 왼쪽"을 선택하십시오.
  8. 하단의보기 섹션에서 사용자 상호 작용 사용 및 다중 터치 사용을 선택하십시오.

3

내가 찾은 Oly 솔루션이 부드럽 지 않지만 JavaScript를 사용하면 줌 레벨을 제어 할 수 있습니다.

당신이 있다고 말하십시오 <head>:

<meta id="vp" name="viewport" content="width=768,initial-scale=1.0">

4 배로 확대하고 사용자가 확대 / 축소를 변경할 수있게하려면 내용을 두 번 변경하십시오.

var vp = document.getElementById('vp');
vp.content = "width=767,minimum-scale=4.0,maximum-scale=4.0,user-scalable=yes";
vp.content = "width=768,minimum-scale=0.25,maximum-scale=10.0,user-scalable=yes";

너비를 토글하는 것이 매우 중요합니다. 그렇지 않으면 Mobile Safari에 심각한 재 페인팅 버그가 있습니다 (과다 최적화로 인해).

initial-scale다시 설정할 수 없으며 두 번째 무시됩니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.