忽略自动布局约束,然后恢复它们

Posted

技术标签:

【中文标题】忽略自动布局约束,然后恢复它们【英文标题】:Ignore autolayout constraints and then restore them 【发布时间】:2015-07-16 15:13:36 【问题描述】:

我需要完全忽略子视图上的自动布局约束。我试过使用translatesAutoresizingMaskIntoConstraints = YES,尽管帖子已经说明了。这很棒,可以让我设置对象的框架。这没有做的是完全忽略自动布局约束,因为我设置translatesAutoresizingMaskIntoConstraints = YES 的视图仍然导致调试器输出“将尝试通过破坏约束来恢复.....”。 我该如何做到这一点,以至于约束甚至不会被引用,而是真正被忽略,直到我想把它们带回来。 有没有简单的解决办法?

【问题讨论】:

【参考方案1】:

ios 8 及更高版本上,您可以通过将 active 属性设置为 false 来停用约束。您可以创建一个IBOutlet 列表,这样您就不必一一引用所有约束并一次激活和停用它们。

为了向后兼容,您可以将它们从视图中删除并稍后再次添加。

【讨论】:

感谢您的回答,我通过制作多个自定义单元格部分解决了该问题,一个包含我想要使用的视图,一个没有它们。我会根据我想要显示的信息交替加载 xib。这以一种全面的方式解决了我的问题,尽管将来我会测试 active 属性,看看它是否真的会导致视图忽略 translatesAutoresizingMaskIntoConstraints 没有的自动布局约束。

以上是关于忽略自动布局约束,然后恢复它们的主要内容,如果未能解决你的问题,请参考以下文章

自动布局约束警告“将尝试通过打破约束来恢复”

自动布局忽略 UITableViewCell 内的垂直布局之一

子视图控制器的视图忽略自动布局约束

自定义 TableViewCell 中忽略自动布局

ObjC,在以编程方式添加/删除后恢复为界面构建器自动布局约束?

在自定义 UITableViewCell 中忽略自动布局