iOS以编程方式为约束添加乘数

时间:2015-11-02 10:36:55

标签: ios objective-c autolayout

如何以编程方式将乘数设置为约束?

CGFloat multiplier;

如何将此乘数添加到约束中?

3 个答案:

答案 0 :(得分:2)

创建约束后无法更改乘数,因为它的readonly属性,你可以更新常量(你可以尝试自己计算常量),但如果不是这样,你真的需要改变乘数,我`建议使用更新的乘数创建新约束并删除旧约束

NSLayoutConstraint *oldConstraint = YOUR_CURRENT_CONSTRAINT;
NSLayoutConstraint *newConstraint = [NSLayoutConstraint constraintWithItem:oldConstraint.firstItem
                                                                 attribute:oldConstraint.firstAttribute
                                                                 relatedBy:oldConstraint.relation
                                                                    toItem:oldConstraint.secondItem
                                                                 attribute:oldConstraint.secondAttribute
                                                                multiplier:NEW_MULTIPLIER
                                                                  constant:oldConstraint.constant];

[YOUR_VIEW_THAT_HOLDS_CONSTRAINT removeConstraint:oldConstraint];
[YOUR_VIEW_THAT_HOLDS_CONSTRAINT addConstraint:newConstraint];

答案 1 :(得分:1)

乘数是只读的,显然你只能在创建约束时设置它。 但您可以随时设置常量值,您可以将其用于大多数用途。

constraint.constant = 50;

如果您在IB中创建了约束,则必须为其创建一个IBOutlet。

答案 2 :(得分:0)

{{1}}属性是只读的。您必须删除旧的NSLayoutConstraint并将其替换为新的NSLayoutConstraint以进行修改。

但是,由于您知道要更改乘数,因此您可以通过在需要更改(通常更少的代码)时自己乘以常量来更改常量。