UIScrollView的setContentSize破坏了使用自动布局的视图

6
我正在我的iPhone应用程序中使用自动布局,并且有一个UIScrollView。我需要在我的应用程序运行时在几个点上更改滚动视图的内容大小(因此在viewWillAppear中设置内容大小是无用的,因为我已经在其他地方看到了此建议)。
当我更改它时,我的子视图会跳动,可能是因为它破坏了自动布局约束。
那么,对于启用了自动布局的滚动视图如何更改其内容大小呢?
谢谢。

在viewDidAppear中尝试而不是在viewWillAppear中尝试 - sunkehappy
抱歉如果我表达不清楚。当视图加载/出现时,我当然会最初设置内容大小,但是在我的自定义方法中,我还需要多次更改它在同一视图中加载/出现后。这就是我的问题。 - Josh Kahane
  1. 也许你的视图对于自动布局来说太过复杂了。
  2. 您没有指定正确的自动布局约束条件,请尝试其他约束条件。
  3. 使用viewWillLayoutSubviews中的代码手动布置您的子视图。
- sunkehappy
你解决了这个问题吗? - Mouhamad Lamaa
1
@JoshKahane - 你有机会尝试过viewDidLayoutSubviews吗? - d2burke
2个回答

14

我也曾遇到这个问题,虽然这不是最终解决方案,但是目前可以将代码放置在viewDidLayoutSubviews中而不是在viewWillLayoutSubviews中调用,这样可以在视图控制器完成默认操作后设置内容大小 :)

希望这能有所帮助。


0

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

当视图的边界发生变化时,视图会调整其子视图的位置。您的视图控制器可以重写此方法,在视图布局其子视图之前进行更改。此方法的默认实现不执行任何操作。

UIViewController类参考


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接