0

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

我创建了一个 LoginViewController,将所有约束放在一个名为“updateConstrains()”的函数中,并在覆盖函数 viewDidLoad() 中调用。如果我在 AppDelegate 中将 LoginViewController 设置为窗口 rootViewController,则效果很好。

正确的布局

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

window!.rootViewController = UINavigationController(rootViewController: loginViewController)

它变成了这样:

自动布局没有效果

以及在打印 LoginViewController 视图的宽度和高度时。事实证明:

宽度 = 155,高度 = 0。

谁能告诉我会发生什么?

4

1 回答 1

0

造成这种情况的一个常见原因是忘记设置translatesAutoresizingMaskIntoConstraints = false视图。

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

有关translatesAutoresizingMaskIntoConstraintsautoresizingMask的信息,请参阅 Apple 文档

于 2016-07-03T16:47:28.633 回答