ios – 滚动UIScrollView会更改其子视图帧

我的应用程序使用故事板和自动布局.在视图控制器中,我创建了一个UIScrollView并添加了三个子视图.

在运行时,我需要更改子视图的大小并重新排列它们.最初,我在viewDidLayoutSubviews中重新排列它们,它似乎工作,直到我滚动滚动视图.然后将子视图帧改变回IB中设置的大小. (我在重新排列视图和删除所有UIViewConstraints时设置了UIScrollView的内容大小.)

最佳答案 框架和自动布局不在一起,如果您使用自动布局,则需要重新排列约束,而不是框架.使用自动布局时更改帧会产生一些奇怪的效果,最终会恢复到您在原始UIView中创建的约束.

一些解决方案:

>您可以像创建视图一样为每个约束创建一个出口,并在需要时更改其常量.
>如果您使用的是xib,则可以在该特定xib中禁用自动布局.

点赞