如何在UIScrollView内部的UIWebView上启用放大功能?


132

我有一个UIWebView里面UIScrollView(滚动视图包含另一个组件)

我尝试在Interface BuilderProgrammatic上都启用多点触摸,UIWebView但仍无法缩放html,是否需要同时在UIScrollView和处进行放大UIWebView?还是我没有要设置的内容?


2
scalesPageToFit = YES它可以工作,但是会更改您的默认内容大小,请看我的回答,这将对您有所帮助。
iPatel

Answers:


348

您必须将scalesPageToFit = YES设置为任何缩放和缩放才能在UIWebView上工作


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 2014年

12

好的,您需要同时执行以上操作和以下操作。我在主视图中有一个Web视图,但是没有用。

  1. 如上所述,您首先必须将UIScrollView放在主视图中,然后将Web视图放在滚动视图中。
  2. 如上所述,<UIScrollViewDelegate>在视图控制器中实现,将滚动视图委托拖动到Interface Builder中的视图控制器,并实现该viewForZoomingInScrollView方法。这必须将指针返回到UIScrollView(返回myScrollView)。
  3. 我为Web视图和滚动视图创建了IBOutlet属性-将它们在NIB中链接到您的视图控制器。
  4. 在“滚动视图”上,转到“属性”检查器,设置“最大”和“最小”缩放系数(我将0.5设置为5.0,效果很好)。
  5. 在Web视图上的“属性”检查器中:
  6. 在“ Web视图”部分中,选择“缩放页面以适合页面”
  7. 在“视图”部分中,为“模式”选择“左上”
  8. 在底部的“查看”部分中,选中“启用用户交互”和“启用多点触控”

3

使用JavaScript,您可以控制缩放级别,尽管我发现的oly解决方案看起来并不流畅。

假设您有<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重新设置-第二次将其忽略。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.