有人知道为所有子视图设置translatesAutoresizingMaskIntoConstraints为false的含义吗?
请考虑以下事项:
extension UIView {
public func setAutoresizingMaskIntoConstraintsForAllSubviews() {
for v in self.subviews {
v.translatesAutoresizingMaskIntoConstraints = false
}
}
}
...
let cell = UITableViewCell()
cell.setAutoresizingMaskIntoConstraintsForAllSubviews() //or
cell.contentView.setAutoresizingMaskIntoConstraintsForAllSubviews()
根据我的测试,一切正常。我没有看到任何与任何UIKit组件的约束冲突。
根据Apple的文档:
默认情况下,对于您的任何视图,该属性都设置为true 以编程方式创建。如果在Interface Builder中添加视图,则 系统自动将此属性设置为false。
https://developer.apple.com/reference/uikit/uiview/1622572-translatesautoresizingmaskintoco
答案 0 :(得分:2)
虽然可能没有本身错误...
首先,除非你使其递归,否则不会命中子视图的子视图。
其次,如果你做使其递归,你最终会设置滚动视图滚动指示器,按钮背景图像视图等属性。
第三,因为您是以编程方式创建视图,所以为什么不在该代码中明确设置值?
而且,一般来说,只是盲目地抛出“全能”代码片段,因为你不确定发生了什么是一个非常糟糕的主意。