在viewDidLoad()中UIView.translatesAutoResizing为false,在viewDidLayoutSubviews()中为true

时间:2018-03-27 23:11:50

标签: uiview ios-autolayout autoresizingmask

我有一个在IB中创建的普通旧UIView,因此其translatesAutoresizingMaskIntoConstraints标记应设置为 false 。当然, - 在viewDidLoad()中。但是当viewDidLayoutSubviews()滚动时,该值已变为 true 。当然,翻译产生的约束与我自己的一个约束冲突。

此标志如何或在何处更改?

结果是我得到了心爱的人#34;无法同时满足约束"控制台输出。但是,在viewDidLayoutSubviews()中将标志更改回 false 可修复冲突。所以我知道要做什么,但我没有看到为什么。 (是的,我已经清理了项目并重新启动了Xcode。)

1 个答案:

答案 0 :(得分:0)

Apple文档明确指出,当故事板设置为使用自动布局,并且其中一个视图没有约束时,iOS会设法给它一些约束。令人惊讶的是所选择的机制:操作系统在布局之前自动将translatesAutoresizingMaskIntoConstraints标志设置为 true

这也是我可能已经使用过的方法:通过轻击一个开关,操作系统可以确保自动生成约束为IB创建的视图采用与编程创建的视图相同的代码路径。 (默认情况下,标志设置为 true 。)

在我的情况下,我 清除代码中预先存在的约束,然后以编程方式创建新的约束。但我想translatesAutoresizingMaskIntoConstraints旗帜的神奇重新设定发生在这两个行动之间。