UIWebView 内部滚动视图

Posted

技术标签:

【中文标题】UIWebView 内部滚动视图【英文标题】:UIWebView Internal ScrollView 【发布时间】:2014-02-21 20:32:00 【问题描述】:

我正在尝试根据 UIWebView 的内部 UIScrollView 的 zoomScale 对一些 CALayers 应用缩放转换。但是,我注意到 minimumZoomScale/maximumZoomScale 值随着缩放的执行而不断变化。这很奇怪,因为这不是 UIScrollView 在单独使用时的执行方式。通常,UIScrollView 的 zoomScale 在已明确设置的最小和最大缩放比例值之间波动。

这是取自 UIWebView 内部 UIScrollView 的日志

2014-02-21 15:19:36.335 CCCanvasSample[31484:70b] MIN SCALE 1.000000 //Zoomed all the way out
2014-02-21 15:19:36.335 CCCanvasSample[31484:70b] ZOOM SCALE 1.000000
2014-02-21 15:19:36.336 CCCanvasSample[31484:70b] MAX SCALE 7.200000
2014-02-21 15:19:41.433 CCCanvasSample[31484:70b] MIN SCALE 1.000000
2014-02-21 15:19:41.433 CCCanvasSample[31484:70b] ZOOM SCALE 3.179087
2014-02-21 15:19:41.434 CCCanvasSample[31484:70b] MAX SCALE 7.200000
2014-02-21 15:19:46.417 CCCanvasSample[31484:70b] MIN SCALE 0.314534
2014-02-21 15:19:46.418 CCCanvasSample[31484:70b] ZOOM SCALE 2.127526
2014-02-21 15:19:46.418 CCCanvasSample[31484:70b] MAX SCALE 2.264642
2014-02-21 15:19:49.555 CCCanvasSample[31484:70b] MIN SCALE 0.147830
2014-02-21 15:19:49.555 CCCanvasSample[31484:70b] ZOOM SCALE 1.064375
2014-02-21 15:19:49.556 CCCanvasSample[31484:70b] MAX SCALE 1.064375
2014-02-21 15:19:51.598 CCCanvasSample[31484:70b] MIN SCALE 0.138889
2014-02-21 15:19:51.598 CCCanvasSample[31484:70b] ZOOM SCALE 1.000000
2014-02-21 15:19:51.599 CCCanvasSample[31484:70b] MAX SCALE 1.000000 //Zoomed all the way in

这是来自常规 UIScrollView 的日志:

2014-02-21 15:24:10.342 CCCanvasSample[31540:70b] MIN SCALE 0.033884
2014-02-21 15:24:10.344 CCCanvasSample[31540:70b] ZOOM SCALE 0.033884
2014-02-21 15:24:10.344 CCCanvasSample[31540:70b] MAX SCALE 0.500000
2014-02-21 15:24:14.595 CCCanvasSample[31540:70b] MIN SCALE 0.033884
2014-02-21 15:24:14.596 CCCanvasSample[31540:70b] ZOOM SCALE 0.055143
2014-02-21 15:24:14.596 CCCanvasSample[31540:70b] MAX SCALE 0.500000
2014-02-21 15:24:16.440 CCCanvasSample[31540:70b] MIN SCALE 0.033884
2014-02-21 15:24:16.440 CCCanvasSample[31540:70b] ZOOM SCALE 0.355361
2014-02-21 15:24:16.441 CCCanvasSample[31540:70b] MAX SCALE 0.500000
2014-02-21 15:24:18.503 CCCanvasSample[31540:70b] MIN SCALE 0.033884
2014-02-21 15:24:18.504 CCCanvasSample[31540:70b] ZOOM SCALE 0.500000
2014-02-21 15:24:18.504 CCCanvasSample[31540:70b] MAX SCALE 0.500000

我还注意到,如果我尝试自己设置 UIWebView 将重置其 UIScrollView 的最小/最大缩放比例。 谁能解释一下这种行为?

【问题讨论】:

【参考方案1】:

经过一段时间的努力,我能够获得 UIWebView 的准确缩放比例:

CGFloat accurateZoomScale = webView.scrollView.zoomscale/webView.scrollView.minimumZoomScale;

仍然不确定 UIWebView 如何操作其内部 UIScrollView 的具体细节,但希望这可以节省一些时间。

【讨论】:

以上是关于UIWebView 内部滚动视图的主要内容,如果未能解决你的问题,请参考以下文章

如何将 UIWebView 垂直滚动事件传输到父视图?

如何使用 UITableView 创建包含 UIWebView 的可滚动视图

UIScrollView 内的 UIWebView 并滚动到 Web 视图中的选定字段

UIWebView:使框架适合视图大小,允许在 UISplitViewController 上的该框架内滚动

UIWebView 的 UIScrollView 子视图可以滚动但会弹回框架而不出现垂直滚动指示器

iOS 邮件消息视图,如 UIWebView