Autolayout不起作用

时间:2016-07-03 15:14:30

标签: swift autolayout cartography

我刚刚开始研究swift,当我使用制图自动布局视图时,我遇到了问题。这是发生的事情。

我创建一个LoginViewController,将所有约束放在名为" updateConstrains()"的函数中,并在override func viewDidLoad()中调用。如果我将LoginViewController设置为AppDelegate中的窗口rootViewController,它运行良好。

The right layout

但是如果我把LoginViewController作为UINavigationController的rootViewController,如下所示:

  

window!.rootViewController =   UINavigationController(rootViewController:loginViewController)

它变成这样:

The autolayout has no effect

并打印LoginViewController视图的宽度和高度。事实证明:

width = 155,height = 0。

谁能告诉我会发生什么?

1 个答案:

答案 0 :(得分:0)

导致此问题的常见原因是忘记在视图上设置translatesAutoresizingMaskIntoConstraints = false

在代码中实例化的视图默认情况下将此属性设置为true。这会根据autoresizingMask的值创建一组自动布局约束。如果未正确定义自动调整掩码(通常是使用自动布局时),则生成的约束将不是您想要的。

请参阅Apple文档了解translatesAutoresizingMaskIntoConstraintsautoresizingMask