我正在使用here描述的EGO Pull and Refresh代码来实现“下拉刷新”功能到UIWebView
。一切正常,直到我缩放webView。
如果我将子项添加到webView.scrollView
,它会滚动很好,但在webView缩放时不会调整大小。它保持绝对相同的大小。我是否将autoresizeMask
设置为FlexibleWidth或将autoresizeSubviews
设置为YES。
编辑:
换句话说,我的问题是:为什么WebView内容缩放好,而我自己的观点,添加到同一个地方(UIWebView
)不?另外,为什么它是滚动OK,但没有缩放?
答案 0 :(得分:0)
这更多地是对正在发生的事情的解释,而不是实现预期行为的方式:
滚动视图有一个框架,它实际上是滚动视图包含的内容的查看窗口。将子视图添加到滚动视图时,视图将“添加”(实现不清楚)到scrollview的内容视图,该视图通常大于滚动视图的框架。滚动视图的内容偏移量与滚动视图的帧的大小相结合,确定内容视图的哪个部分可见。当您缩放Web视图时,内容视图大小正在改变,但您的EGO视图将不会获得调整大小消息,因为内容视图不是真正的UIView,或滚动视图阻止调整其子视图的某种方式(只是一个猜测实施)。这是预期的结果,因为您可能想要调整滚动视图内部的内容以及组合内容的大小,而无需调整每个单独部分的大小。
可能比以下建议更简单:
如果您没有处理Web视图,只处理滚动视图,则可以继承UIScrollView并覆盖setContentSize以手动调整EGO视图的大小。但是,由于您无法在Web视图中交换滚动视图,因此您可能会考虑使用方法调配来交换Web视图滚动视图的setContentSize方法的实现。
但是,如果我是你,我会考虑为什么你希望EGO视图首先调整大小。它不是Web视图内容的一部分,而是用户可以采取的修改内容的动作......所以看起来您希望它保留可读/可用的大小。你也可以考虑网页视图的内容,如果你需要允许用户首先调整它的大小。使用标准新闻源,将其锁定在理想的观看大小可能会更好。
编辑:
查看图表后,看起来您想要的不是调整EGO视图的大小,而是改变它的位置,使其始终位于Web视图顶部的中心位置。最安全的方法是成为Web视图滚动视图的委托,跟踪原始委托的任何内容(实现独立(在某种程度上))并将所有协议方法转发给原始委托。然后,在scrollViewDidScroll方法(和/或scrollViewDidZoom,等等......)中,您可以将EGO帧的origin.x设置为contentOffset.x。