0

我通常在我的视图控制器的 updateCONstratins 方法中设置我所有的自动布局代码,用于定义视图的所有子类的约束。然后在子视图中,我将约束放在 updateConstraints 方法中。这使我拥有班级中每个视图的属性,因此我可以稍后在将 translate.... 设置为 false 后引用它。但我读到您不必在 updateConstraints 中设置它。只是我没有读过一篇文章,有人说苹果工程师说如果约束只做一次,那么你几乎可以把它们放在任何地方。但是,如果您有在视图生命周期中发生变化的约束,您可以将它们放在 updateConstraints 中吗?以下是链接http://swiftandpainless.com/where-to-put-the-auto-layout-code/ http://swiftandpainless.com/dont-put-view-code-into-your-view-controller/

那么它应该去哪里呢?这只是一种旧的方式,现在它已经改变了吗?

4

2 回答 2

0

通常没有理由不将您的约束创建代码放入 中viewDidLoad,它的优点是只调用一次。对于更改的约束,我喜欢将该代码与直接促成更改的任何内容相关联,例如大小类的更改或视图的删除或插入。

于 2018-03-18T04:10:03.657 回答
0

您在帖子中所说的是您通常想要做的事情。将任何可能更改的约束放入updateConstraints. 这也意味着您应该保留对它们的引用,以便能够更新它们或删除/替换它们。任何静态的都可以放在初始化代码之后(例如 a 的init方法UIView或 a 的viewDidLoad方法UIViewController)。唯一真正的要求是您只能将约束添加到实际上位于视图层次结构中的视图中,因此在添加适当的视图之后的任何时候都可以。

于 2018-03-18T03:48:48.330 回答