我有一个在IB中创建的普通旧UIView
,因此其translatesAutoresizingMaskIntoConstraints
标记应设置为 false 。当然,是 - 在viewDidLoad()
中。但是当viewDidLayoutSubviews()
滚动时,该值已变为 true 。当然,翻译产生的约束与我自己的一个约束冲突。
此标志如何或在何处更改?
结果是我得到了心爱的人#34;无法同时满足约束"控制台输出。但是,在viewDidLayoutSubviews()
中将标志更改回 false 可修复冲突。所以我知道要做什么,但我没有看到为什么。 (是的,我已经清理了项目并重新启动了Xcode。)
答案 0 :(得分:0)
Apple文档明确指出,当故事板设置为使用自动布局,并且其中一个视图没有约束时,iOS会设法给它一些约束。令人惊讶的是所选择的机制:操作系统在布局之前自动将translatesAutoresizingMaskIntoConstraints
标志设置为 true 。
这也是我可能已经使用过的方法:通过轻击一个开关,操作系统可以确保自动生成约束为IB创建的视图采用与编程创建的视图相同的代码路径。 (默认情况下,标志设置为 true 。)
在我的情况下,我 清除代码中预先存在的约束,然后以编程方式创建新的约束。但我想translatesAutoresizingMaskIntoConstraints
旗帜的神奇重新设定发生在这两个行动之间。