iOS - 以编程方式更改约束关系

iOS - changing constraint relation programmatically

以编程方式在 ios 中给出以下约束:

IBOutlet NSLayoutConstraint *myConstraint;

此约束在 interfacebuilder 中链接到以下详细信息:

如何以编程方式更改关系属性。我试图查找名为 setRelation 的方法,但我没有看到它。

根据 documentationrelation 是只读的。

我想你需要做的是设置

self.myConstraint.active = NO;

然后以编程方式创建一个新的 NSLayoutConstraint

+ constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:

并在此过程中复制您要保留的值,并替换关系。

然后 add it to the view hierarchy 在适当的地方。

你可以这样做:

  [self.view addConstraint:[NSLayoutConstraint
                                 constraintWithItem:self.yellowView
                                 attribute:NSLayoutAttributeWidth
                                 relatedBy:NSLayoutRelationEqual
                                 toItem:self.redView
                                 attribute:NSLayoutAttributeWidth
                                 multiplier:0.75
                                 constant:0.0]];