【问题标题】:UIScrollView layoutSubviews behavior changes in iOS 5?iOS 5 中的 UIScrollView layoutSubviews 行为变化?
【发布时间】:2011-11-07 12:24:19
【问题描述】:

我正在开发一个组件,它是 UIView 的子类并包含 UIScrollView。 滚动时,我注意到不同的行为取决于我构建的 SDK。在 iOS 4 上,layoutSubviews 消息在滚动视图的超级视图(这是我的组件)上发送,但在 iOS 5 上,消息似乎不再发送......

在查看了 iOS 5 发行说明和变更日志后,我没有发现任何有关此类变更的信息。我错过了什么吗?

【问题讨论】:

    标签: ios uiscrollview layoutsubviews


    【解决方案1】:

    在 iOS5 中,layoutSubviews 不会在滚动视图的父视图上调用。但它是在 iOS4 中。

    如果您希望在 iOS5 中实现此行为,请在您的 UIScrollView 子类中执行此操作:

    - (void)layoutSubviews {
        [super layoutSubviews];
    
        // causes layoutSubviews to get called on superview
        [self.superview setNeedsLayout]; 
    

    这可能已更改为更有效。仅仅因为 UIScrollView 是滚动的,并不意味着它的 superview 需要自己布局。

    【讨论】:

    • 这正是我的想法,你说得对,这完全有道理。谢谢!
    • 呃,这不会导致“无休止的布局循环”吗?所以一旦layoutSubviews 被调用,它就会在每次运行循环迭代时被调用。
    • 我的测试没有循环,我可以再次验证,我会挖掘我写这个答案时写的示例代码。
    【解决方案2】:

    我在调整按钮大小时遇到​​了很大的问题,女巫是 tableview 中的子视图。笔尖加载了较小的按钮,加载后我调整了它的大小。但表格视图内容没有。 (在 iOS 4.* 中它是完美的,但在 iOS 5 中)。所以我发现我必须将调整大小放在 ViewDidLoad 中。我希望它对一些人有帮助1 =)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-13
      • 1970-01-01
      • 2013-03-15
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多