UIScrollView setContentSize 使用自动布局打破视图

Posted

技术标签:

【中文标题】UIScrollView setContentSize 使用自动布局打破视图【英文标题】:UIScrollView setContentSize breaks view with Auto Layout 【发布时间】:2012-11-18 10:29:10 【问题描述】:

我在我的 iPhone 应用程序中使用自动布局并且有一个 UIScrollView。在我的应用程序运行时,我需要在多个点更改滚动视图的内容大小(因此在viewWillAppear 中设置内容大小是没有用的,因为我在其他地方看到了这个建议)。

当我更改它时,我的子视图会跳来跳去,大概是因为它打破了自动布局约束。

那么如何在启用自动布局的情况下更改滚动视图内容大小?

谢谢。

【问题讨论】:

在 viewDidAppear 中尝试,而不是在 viewWillAppear 中 对不起,如果我不清楚。我当然在视图加载/出现时最初设置内容大小,但是在我自己的方法中加载/出现后,我还需要在同一个视图中多次更改它。这是我的问题。 1.也许您的视图对于自动布局来说太复杂了。 2.您没有指定正确的自动布局约束,尝试一些其他的约束。 3.使用viewWillLayoutSubviews中的代码手动布局子视图。 问题解决了吗? @JoshKahane - 你有机会尝试 viewDidLayoutSubviews 吗? 【参考方案1】:

我遇到了同样的问题,我知道这不是最终的解决方案,但现在,与其在viewWillLayoutSubviews 中调用它,而是将代码放在viewDidLayoutSubviews 中,它允许我设置 contentSize之后 viewController 做了它的默认业务:)

希望对您有所帮助。

【讨论】:

【参考方案2】:

viewWillLayoutSubviews 中测试您的代码。苹果说:

当视图的边界发生变化时,视图会调整其位置 子视图。您的视图控制器可以覆盖此方法以使 在视图布置其子视图之前发生变化。默认 这个方法的实现什么都不做。

UIViewController Class Reference

【讨论】:

以上是关于UIScrollView setContentSize 使用自动布局打破视图的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView里面的UIScrollView:滚动

问题:UIScrollview 弹跳使父 UIScrollview 弹跳

UIScrollView 嵌入其他 UIScrollView

分页 UIScrollView 内的 UIScrollView

UIScrollView

UIscrollView