如何正确设置约束的动画?

时间:2014-02-10 05:59:32

标签: ios objective-c autolayout

我正在使用自动布局,我正在尝试在屏幕上和屏幕外滑动视图。我尝试了几种方法,一些来自stackoverflow,一些来自Apple文档,但没有任何效果。视图只是在屏幕上弹出,无论我在动画时使用的持续时间是什么。

如下所示,我已经尝试过几种方法。什么都行不通。隐藏和显示它们只是在屏幕上弹出(即不动画)。

-(void)hideButtons {

[self.view layoutIfNeeded]; // Ensures that all pending layout operations have been completed


[UIView animateWithDuration:1.5f animations:^{
    self.leftSideConstraint.constant = 300;
    [self.view layoutIfNeeded];
}];
}

-(void)showButtons {

//[self.view layoutIfNeeded]; // Ensures that all pending layout operations have been completed

self.leftSideConstraint.constant = 87;
[self.view setNeedsUpdateConstraints];

[UIView animateWithDuration:1.5f animations:^{

    [self.view layoutIfNeeded];

}];
}

1 个答案:

答案 0 :(得分:0)

您确定self.leftSideConstraint已添加到self.view而不是其超级视图或其他视图吗?如果是后者,那么我相信这是你的问题。我认为您需要在具有该约束的视图上setNeedsUpdateConstraintslayoutIfNeeded

编辑:实际上,您可以在setNeedsUpdateConstraints上致电self.view,因为它会在视图层次结构中传播,但我相信您需要在超级视图上layoutIfNeeded

相关问题