2016-04-20 78 views
0

我想改变我的宽度约束的视图。我已将宽度与IBOutlet连接在View Controller中。但是,它不起作用。更改NSLayoutConstraint不工作,查看继续回去

尝试对它进行动画处理,实际上视图会继续回到其原始位置。

下面是代码:

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

任何人都可以提出建议?

+0

'updateConstraintsIfNeeded'而不是'layoutIfNeeded'? – 9dan

回答

0

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

你可以尝试这样的事情:

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

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

这是从layoutIfNeeded苹果文档:

使用此方法强制子视图的布局图前。使用接收消息作为根视图的视图,此方法将从根开始的视图子树布局。