设置translatesAutoresizingMaskIntoConstraints到所有子视图

时间:2017-05-01 17:06:03

标签: ios swift uitableview uikit constraints

有人知道为所有子视图设置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

1 个答案:

答案 0 :(得分:2)

虽然可能没有本身错误...

首先,除非你使其递归,否则不会命中子视图的子视图。

其次,如果你使其递归,你最终会设置滚动视图滚动指示器,按钮背景图像视图等属性。

第三,因为您是以编程方式创建视图,所以为什么不在该代码中明确设置值?

而且,一般来说,只是盲目地抛出“全能”代码片段,因为你不确定发生了什么是一个非常糟糕的主意。