0

我正在使用此处描述的 EGO 拉取和刷新代码来实现“下拉​​刷新”功能到UIWebView. 一切正常,直到我缩放 webView。

如果我向它添加子webView.scrollView元素,它滚动正常,但在 webView 缩放时不会调整大小。它保持完全一样的大小。如果我设置autoresizeMask为 FlexibleWidth 或设置autoresizeSubviews为 YES。

编辑:

换句话说,我的问题是:为什么 WebView 内容可以缩放,而我自己的视图添加到同一个地方(in UIWebView)却不行?另外,为什么它可以滚动,但不能缩放?

在此处输入图像描述

4

1 回答 1

1

这更多的是对正在发生的事情的解释,而不是实现预期行为的方法:

滚动视图有一个框架,它本质上是滚动视图包含的内容的查看窗口。当您将子视图添加到滚动视图时,视图被“添加”(实现不清楚)到滚动视图的内容视图,该内容视图通常大于滚动视图的框架。滚动视图的内容偏移量,结合滚动视图框架的大小决定了内容视图的哪一部分是可见的。当您缩放 Web 视图时,内容视图的大小会发生变化,但您的 EGO 视图不会收到调整大小的消息,因为内容视图不是真正的 UIView,或者滚动视图以某种方式阻止了其子视图的大小调整(只是猜测实现)。

可能有比以下建议更简单的方法:

如果您不处理 Web 视图,而只处理滚动视图,则可以继承 UIScrollView 并覆盖 setContentSize 以使用它手动调整 EGO 视图的大小。但是,由于您不能只换出 web 视图中的滚动视图,您可能会考虑使用方法调配来换出 web 视图滚动视图的 setContentSize 方法的实现。

但是,如果我是你,我会考虑你为什么希望 EGO 视图首先调整大小。它不是 Web 视图内容的一部分,而是用户可以用来修改该内容的操作……所以看起来您希望它保持可读/可用的大小。您还可以考虑 Web 视图的内容,以及是否需要首先允许用户调整其大小。使用标准新闻提要,最好将其锁定为理想的观看尺寸。

编辑:

查看图表后,看起来您想要的不是调整 EGO 视图的大小,而是更改它的位置,使其始终居中于 Web 视图的顶部。最安全的方法是成为 Web 视图的滚动视图的委托,跟踪原始委托的任何内容(在一定程度上独立于实现)并将所有协议方法转发给原始委托。然后,在scrollViewDidScroll方法(和或scrollViewDidZoom等。任何需要的)中,您可以将EGO框架的origin.x设置为contentOffset.x。

于 2012-05-26T00:22:10.490 回答