更改NSLayoutConstraint不起作用,View继续返回

时间:2016-04-20 21:54:19

标签: ios autolayout

我想更改View的宽度约束。我在视图控制器中将宽度与IBOutlet连接起来。但是,它不起作用。

尝试为其制作动画,实际上视图会继续回到原来的位置。

以下是代码:

_providerExpSearchInputWidth.constant = 1000.0f;
[_providerExpSearchInput layoutIfNeeded];

任何人都可以提供建议吗?

1 个答案:

答案 0 :(得分:0)

您应该让视图告诉autolayout首先立即布局其子视图,以便完全知道布局约束。然后你应该设置一个新约束,并在动画块中再次告诉autolayout立即布局其子视图。由于您在动画块中进行此调用,因此所有更改都将进行动画处理。

您可以尝试这样的事情:

[self.view layoutIfNeeded];
_providerExpSearchInputWidth.constant = 1000.0f;

[UIView animateWithDuration:4.0 animations:^{
    [self.view layoutIfNeeded];
}];

这是来自layoutIfNeeded上的Apple文档:

使用此方法在绘制前强制子视图的布局。使用以根视图接收消息的视图,此方法从根开始布置视图子树。