这更多的是对正在发生的事情的解释,而不是实现预期行为的方法:
滚动视图有一个框架,它本质上是滚动视图包含的内容的查看窗口。当您将子视图添加到滚动视图时,视图被“添加”(实现不清楚)到滚动视图的内容视图,该内容视图通常大于滚动视图的框架。滚动视图的内容偏移量,结合滚动视图框架的大小决定了内容视图的哪一部分是可见的。当您缩放 Web 视图时,内容视图的大小会发生变化,但您的 EGO 视图不会收到调整大小的消息,因为内容视图不是真正的 UIView,或者滚动视图以某种方式阻止了其子视图的大小调整(只是猜测实现)。
可能有比以下建议更简单的方法:
如果您不处理 Web 视图,而只处理滚动视图,则可以继承 UIScrollView 并覆盖 setContentSize 以使用它手动调整 EGO 视图的大小。但是,由于您不能只换出 web 视图中的滚动视图,您可能会考虑使用方法调配来换出 web 视图滚动视图的 setContentSize 方法的实现。
但是,如果我是你,我会考虑你为什么希望 EGO 视图首先调整大小。它不是 Web 视图内容的一部分,而是用户可以用来修改该内容的操作……所以看起来您希望它保持可读/可用的大小。您还可以考虑 Web 视图的内容,以及是否需要首先允许用户调整其大小。使用标准新闻提要,最好将其锁定为理想的观看尺寸。
编辑:
查看图表后,看起来您想要的不是调整 EGO 视图的大小,而是更改它的位置,使其始终居中于 Web 视图的顶部。最安全的方法是成为 Web 视图的滚动视图的委托,跟踪原始委托的任何内容(在一定程度上独立于实现)并将所有协议方法转发给原始委托。然后,在scrollViewDidScroll方法(和或scrollViewDidZoom等。任何需要的)中,您可以将EGO框架的origin.x设置为contentOffset.x。