[iOS]:在删除和添加约束时,自动布局动画更改帧位置

时间:2014-05-01 15:06:36

标签: ios autolayout

我有一个复杂的自动布局,需要通过删除旧约束并添加新约束来适应旋转。

我在containerView内有一个视图的网格布局。

问题在于我打电话

  [UIView animateWithDuration:0.4 animations:^{
            [self.containerView layoutIfNeeded];
    }];

视图总是从位置[0,0]动画到新位置。我更喜欢的是视图将从旧位置(在我删除约束之前)移动到新位置(在删除和添加新约束之后)

是否有人能够实现这一目标?

1 个答案:

答案 0 :(得分:1)

以下post给了我提示让它发挥作用:

但不是实际接受的答案,而是:

[UIView animateWithDuration:1.0f delay:0.0f options:UIViewAnimationOptionLayoutSubviews animations:^{
    [self.view layoutIfNeeded];
} completion:nil];

可选参数options:UIViewAnimationOptionLayoutSubviews让我尝试了不同的选项,所需的实际选项是options:UIViewAnimationOptionBeginFromCurrentState

[UIView animateWithDuration:duration delay:delay options:UIViewAnimationOptionBeginFromCurrentState animations:^{
        [self layoutIfNeeded];
    } completion:nil];

允许动画从最后一个位置发生,即使删除了约束并添加了新约束。