ios - 删除 NSLayoutConstraint 的正确方法

标签 ios xcode swift autolayout nslayoutconstraint

在我的应用程序中,我经常使用约束,在大多数情况下还使用动画。在某些情况下,我需要删除约束并添加新约束。

因为我也需要支持 iOS 7,所以我无法使用 active 属性,否则这将是我的解决方案。

移除约束的方法是在UIView 上使用removeConstraint 方法。

是否可以创建类似

的方法
constraint.remove()

所以您不必知道哪个 View 负责约束?

最佳答案

我所做的是创建我希望能够添加/删除的约束数组,并简单地使用以下内容:

@property NSMutableArray *newConstraints;

填写newConstraints

iOS7 和 iOS8:

[self.viewToChange addConstraints:self.newConstraints];
[self.viewToChange removeConstraints:self.newConstraints];

或者仅限iOS8,使用新机制

[NSLayoutConstraint activateConstraints:self.newConstraints];
[NSLayoutConstraint deactivateConstraints:self.newConstraints];

有了它,您可以应用一个集,删除该集并应用一个新集。

如果您可以识别哪些约束是哪些,您也可以从 Storyboard 集创建初始列表。

关于ios - 删除 NSLayoutConstraint 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30102086/

相关文章:

android - 在 Google SDK 内部开发与外部开发

ios - 如何在不重置其当前状态的情况下从一个 viewcontroller 到自身的 segue?

JavaScript - 添加图像 : React Native XCode

ios - 选中单元格后如何移动

swift - 无法使用 * 类型的对象调用 $function

ios - UIAlertControllerInterfaceActionGroupView 不明确的布局

iphone - 如何在不使用导航 Controller 的情况下创建基于多 View 的应用程序?

iphone - 如何将需要 iOS4 的静态库添加到部署目标设置为 3.0 的项目中?

xcode - 如何一次展开 plist 的所有(或选定的后代)节点?

ios - "enable"- 我的 UIButton 成员不存在,为什么?