5

我有一个 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

视图正确增长,但是当我尝试缩小它时,帧更改动画没有动画。它会变成新的大小,然后动画到新的原点/位置。我需要动画帧变化。谁能看到我做错了什么?

4

2 回答 2

2

经过一些修补后,我设法通过执行以下操作来获得所需的行为。

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

我有点困惑为什么这有效,但试图缩小框架却没有。如果有人可以分享对此的一些见解,那就太好了。

于 2012-06-01T12:50:04.463 回答
0

您不应该真正使用帧来制作动画,而应该使用标签的 transform 属性。

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

于 2012-05-27T18:33:47.160 回答