Jas*_*tor 3 constraints objective-c ios autolayout
如何以编程方式修改约束的乘数?我设置了以下内容:
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:_button attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeWidth multiplier:0.5 constant:0.0]];
Run Code Online (Sandbox Code Playgroud)
我需要将其修改为:
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:_button attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeWidth multiplier:1.0 constant:0.0]];
Run Code Online (Sandbox Code Playgroud)
您将无法更改乘数,因为它是只读的.您必须存储对约束的引用.然后,当您想要更改乘数时,您将删除约束并添加一个新约束.
您可以在视图控制器实现中包含这样的方法:
- (void)changeMultiplier:(NSLayoutConstraint **)constraint to:(CGFloat)newMultiplier{
NSLayoutConstraint *newConstraint = [NSLayoutConstraint constraintWithItem:(*constraint).firstItem attribute:(*constraint).firstAttribute relatedBy:(*constraint).relation toItem:(*constraint).secondItem attribute:(*constraint).secondAttribute multiplier:newMultiplier constant:(*constraint).constant];
[self.view removeConstraint:(*constraint)];
[self.view addConstraint:newConstraint];
*constraint = newConstraint;
}
Run Code Online (Sandbox Code Playgroud)
相关问题:
我可以更改NSLayoutConstraint的乘数属性吗?
归档时间: |
|
查看次数: |
13859 次 |
最近记录: |