我通常在视图控制器的updateCOnstratins方法中设置所有自动布局代码,以获取定义视图的所有子类的约束。然后在子视图中,我将约束放在updateConstraints方法中。这使我在我的班级中拥有每个视图的属性,因此我可以在稍后设置翻译后将其引用为false。但我读到你不必在updateConstraints中设置它。我不是读了一篇文章,其中有人说苹果工程师说,如果限制只做了一次那么你可以把它们放在任何地方。但是,如果您在视图生命周期中有约束更改,则将它们放在updateConstraints中?以下是http://swiftandpainless.com/where-to-put-the-auto-layout-code/ http://swiftandpainless.com/dont-put-view-code-into-your-view-controller/链接。
那么应该去哪里?这只是一种老式的做法,现在已经改变了吗?
答案 0 :(得分:0)
您在帖子中所说的是您通常想要做的事情。放置updateConstraints
中可能发生变化的任何约束。这也意味着您应该保留对它们的引用,以便能够更新它们或删除/替换它们。可以在初始化代码(例如init
的{{1}}方法或UIView
的{{1}}方法)之后放置任何静态代码。唯一真正的要求是,您只能为视图层次结构中实际存在的视图添加约束,因此在添加适当的视图后的任何时候都可以。
答案 1 :(得分:0)
通常没有理由不将约束创建代码放在viewDidLoad
中,这样做的优点是只能被调用一次。对于更改的约束,我喜欢将该代码与直接促成更改的任何内容相关联,例如更改大小类或删除或插入视图。