我正在开发一个组件,它是 UIView 的子类并包含 UIScrollView。滚动时,我注意到不同的行为取决于我构建的 SDK。在 iOS 4 上,layoutSubviews 消息在滚动视图的超级视图(这是我的组件)上发送,但在 iOS 5 上,消息似乎不再发送......
在查看了 iOS 5 发行说明和变更日志后,我没有发现任何关于此类变更的提及。我错过了什么吗?
我正在开发一个组件,它是 UIView 的子类并包含 UIScrollView。滚动时,我注意到不同的行为取决于我构建的 SDK。在 iOS 4 上,layoutSubviews 消息在滚动视图的超级视图(这是我的组件)上发送,但在 iOS 5 上,消息似乎不再发送......
在查看了 iOS 5 发行说明和变更日志后,我没有发现任何关于此类变更的提及。我错过了什么吗?
在 iOS5 中,layoutSubviews 不会在滚动视图的父视图上调用。但它是在 iOS4 中。
如果您希望在 iOS5 中实现此行为,请在您的 UIScrollView 子类中执行此操作:
- (void)layoutSubviews {
[super layoutSubviews];
// causes layoutSubviews to get called on superview
[self.superview setNeedsLayout];
这可能已更改为更有效。仅仅因为 UIScrollView 正在滚动,并不意味着它的 superview 需要自行布局。
我在调整按钮大小时遇到了很大的问题,女巫是 tableview 中的子视图。笔尖加载了较小的按钮,加载后我调整了它的大小。但表格视图内容没有。(在 iOS 4.* 中它是完美的,但在 iOS 5 中)。所以我发现我必须将调整大小放在 ViewDidLoad 中。我希望它对一些人有帮助1 =)