我有一个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
视图正确增长,但当我尝试缩小视图时,帧更改动画不会动画化。它会突然显示新的大小,然后动画到新的原点/位置。我需要将帧更改设置为动画。谁能看到我做错了什么?
答案 0 :(得分:2)
经过一些修修补补后,我通过执行以下操作成功获得了所需的行为。
在expand方法中,我使用UIView动画来改变框架。 在shrink方法中,我使用UIView动画来改变边界和中心。
我有点困惑,为什么这样可行,但试图用框架收缩却没有。如果有人能分享一些对此有用的见解,那就太棒了。
答案 1 :(得分:0)
您不应该使用框架来设置动画,而应该使用标签的transform属性。
但是,由于您希望一个角保持静止,我认为您最好使用Core Animation。 CALayer
有一个名为anchorPoint
的属性,用于确定图层相对于哪个点旋转,我很确定它对增长/缩小效果也有效。