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

时间:2015-05-21 18:25:31

标签: ios xcode interface-builder nslayoutconstraint

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

IBOutlet NSLayoutConstraint *myConstraint;

这个约束在interfacebuilder中链接到以下细节: enter image description here

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

2 个答案:

答案 0 :(得分:11)

根据documentationrelation是只读的。

我怀疑,您需要做的是设置

self.myConstraint.active = NO;

然后使用以下方式以编程方式创建新的NSLayoutConstraint

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

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

然后add it to the view hierarchy。{/ p>

答案 1 :(得分:2)

你可以这样做:

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