我想在代码中以编程方式更新约束。我已将它们添加到storyboard控制器中。我为约束制作IBOutlet并连接它们。我在updateViewConstrains()
中添加了值,但它无效:
func updateViewConstraints() {
centerYConstraint.constant = 60
super.updateViewConstraints()
}
答案 0 :(得分:5)
在IBOutlet
文件中创建viewController.h
:
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *nameButtonVerticalConstraint;
现在将其与相关的自动布局约束连接起来:
现在您可以像这样简单地更改约束:
self.nameButtonVerticalConstraint.constant=25;
如果你想要更平滑的过渡,你可以把它放在一个动画块中:
[UIView animateWithDuration:1.2 delay:1 options:UIViewAnimationOptionCurveEaseInOut animations:^{
self.nameButtonVerticalConstraint.constant=50;
[self.view layoutIfNeeded];
} completion:nil];
编辑:这里摘自this文章
如果由于更新上述约束而影响其他约束,则还必须调用以下内容:
[viewForUpdate setNeedsUpdateConstraints];
现在,通过在动画块中调用layoutIfNeeded
来为视图设置动画。
答案 1 :(得分:2)
尝试myConstraintOutlet.constant = newValue;
答案 2 :(得分:1)
您可以更新布局约束的constant
属性。
答案 3 :(得分:0)
对于单个约束,可以很容易地通过更改其常量值来进行更新。如何更改多个约束?
在这种情况下,最好采用这样的方式。
将约束存储在数组中。
for