如何在IB中添加NSLayoutConstraint但直到稍后才添加?

时间:2014-12-19 20:09:44

标签: ios objective-c autolayout

我正在开发一款具有相对复杂导航系统的应用程序,该系统在很大程度上依赖于自动布局。

我不想以编程方式定义约束,而是希望在Interface Builder中设计它们,但在用户触发某个事件之前不要将它们添加到视图中。

如果我取消选中“已安装”约束,我可以使用addConstraint:方法稍后在大多数设备上添加它,但在其他设备上约束为NULL。是否可以确保最初未安装的此约束的引用保留在所有设备和iOS版本上?

谢谢!

1 个答案:

答案 0 :(得分:1)

由于NSLayoutConstraint类没有启用/禁用标志,我认为唯一的选择是:

  • 定义IB中的所有约束
  • 为所有约束创建绑定属性
  • viewDidLoad中,从视图中移除您不需要的约束([self.view removeConstraints: @[self.constraint1, self.constraint2]]
  • 当用户触发事件时 - 将其添加回来并强制重新布局