动画UIView增长/缩小

我有一个UILabel我希望动画成长和缩小。 当尺寸发生变化时,我需要左下角保持静止,以便它始终显示在底部工具栏的正上方。 我使用以下代码使标签增长:

[UIView animateWithDuration:kAnimationDuration delay:0.0 options:UIViewAnimationCurveEaseInOut animations:^{ CGFloat lblHeight = 42.0f; [label setFrame:CGRectMake(0.0, CGRectGetMaxY(self.view.bounds) - kBottomBarHeight - lblHeight, CGRectGetMaxX(self.view.bounds), lblHeight)]; } completion:^(BOOL finished) { }]; 

为了使它缩小我使用相同的逻辑,除了lblHeight设置为17.0f

视图正确增长但是当我尝试缩小它时,框架更改动画不会动画化。 它会突然显示新的大小,然后动画到新的原点/位置。 我需要将帧更改设置为动画。 谁能看到我做错了什么?

经过一些修修补补后,我通过以下方式设法获得了理想的行为。

在expand方法中,我使用UIView动画来改变框架。 在shrink方法中,我使用UIView动画来改变边界和中心。

我有点困惑,为什么这个有效,但试图用框架收缩不会。 如果有人可以分享一些对此的见解,这将是伟大的。

您不应该使用框架来动画,而应该使用标签的transform属性。

但是,由于您希望一个角保持静止,我认为您最好使用Core Animation。 CALayer有一个名为anchorPoint的属性,它确定一个图层相对于哪个点旋转,我很确定它对于增长/缩小效果也是有效的。