2015-04-06 59 views
1

我想在代码中以编程方式更新约束。我已经将它们添加到故事板控制器中。我为IBOutlet制作约束并连接它们。我在updateViewConstrains()增加值,但它不工作:如何以编程方式更新约束?

func updateViewConstraints() { 
    centerYConstraint.constant = 60 

    super.updateViewConstraints() 
} 
+0

显示你的代码,具体什么不起作用? – Wain 2015-04-06 12:10:34

+0

覆盖FUNC updateViewConstraints(){ centerYConstraint.constant = 60个 super.updateViewConstraints() } – Nik 2015-04-06 12:15:20

回答

1

您可以更新布局约束的constant财产。

1

尝试myConstraintOutlet.constant = newValue;

4

viewController.h文件中创建一个IBOutlet

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *nameButtonVerticalConstraint; 

现在它与有关自动布局约束连接:

enter image description here

现在,你可以简单地改变约束像这样:

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

+0

我尝试相同的,但没有工作:( – Nik 2015-04-06 12:51:39

+0

@Nik。编辑答案请检查 – ShahiM 2015-04-07 06:09:35