减少动画视图和子视图

时间:2017-04-03 12:48:23

标签: ios objective-c animation resize

我目前正在尝试将包含UIView动画的UILabel设为新尺寸。但这样做我在理解我的观点中真正发生的事情时遇到了一些麻烦。我读了一些关于它的帖子,但我仍然不清楚到底发生了什么。

Start End wanted Constraints

在我的按钮中,我添加了一些只是右边约束大小的东西:

[superView layoutIfNeeded];
rightConst.constant *= 2;
[UIView animateWithDuration:3
animations:^{
        [superView layoutIfNeeded];
    } completion:nil];

superView作为视图我想要制作动画并将右边的约束对齐。

但这样做,动画开始但实际上是从左边开始。我不明白这一部分。我的目标是在视图的右侧设置动画以显示调整大小,也可以显示视图的底部,但左上角应该是固定的。

Animation strange

感谢。

1 个答案:

答案 0 :(得分:-1)

如此document中所述,如果您致电[aView layoutSubviews],则会强制aView的子视图布局,但不会强制aView本身的布局。

您需要调用要设置动画的视图的superview的layoutSubviews。在这种情况下,两个标签的超级视图的超级视图。

解决方案就在这里

UIView *theView;
// theView is the superview of the superview of the two labels.
theView = superView.superview;
[theView layoutIfNeeded];
rightConst.constant *= 2;
[UIView animateWithDuration:3
    animations:^{
        [theView layoutIfNeeded];
    } completion:nil];