我想在代码中以编程方式更新约束。我已经将它们添加到故事板控制器中。我为IBOutlet制作约束并连接它们。我在updateViewConstrains()
增加值,但它不工作:如何以编程方式更新约束?
func updateViewConstraints() {
centerYConstraint.constant = 60
super.updateViewConstraints()
}
我想在代码中以编程方式更新约束。我已经将它们添加到故事板控制器中。我为IBOutlet制作约束并连接它们。我在updateViewConstrains()
增加值,但它不工作:如何以编程方式更新约束?
func updateViewConstraints() {
centerYConstraint.constant = 60
super.updateViewConstraints()
}
您可以更新布局约束的constant
财产。
尝试myConstraintOutlet.constant = newValue;
在viewController.h
文件中创建一个IBOutlet
:
@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
。
显示你的代码,具体什么不起作用? – Wain 2015-04-06 12:10:34
覆盖FUNC updateViewConstraints(){ centerYConstraint.constant = 60个 super.updateViewConstraints() } – Nik 2015-04-06 12:15:20