忽略自动布局约束,然后恢复它们
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 内的垂直布局之一