如何在没有图像变形的情况下为UIButton的高度设置动画效果?

时间:2011-12-05 21:22:14

标签: cocoa-touch uiviewanimation

我正在使用[UIView animateWithDuration:animations:]隐藏UIButton,将其frame.size.height更改为0。但是,一旦动画开始,圆角矩形和背景会立即消失,而按钮文本会剪切视图的边界。

我正在使用的代码相当简单:

CGRect newFrame = button.frame;
newFrame.size.height = 0;
[UIView animateWithDuration:2.0 animations:^{
    button.frame = newFrame;
}];

我注意到这只发生在我将高度设置为0时。似乎动画开始时,按钮只是在最终状态下重绘一次。通过将此静态图像从原始大小缩放到最终大小来执行动画。由于无法看到高度为0的按钮,导致整个圆形消失(按钮上的文字除外,因为它是不同的视图)。

必须有更好的方法来做到这一点,所以动画看起来并不奇怪。如何让动画按照我想要的方式运行?

3 个答案:

答案 0 :(得分:0)

如果你做这样的事情会更好吗?

CGRect newFrame = button.frame;
newFrame.size.height = 1;

[UIView animateWithDuration:2.0 
                 animations:^{button.frame = newFrame;} 
                 completion:^{button.hidden = YES;}];

如果您使用的是系统圆角矩形按钮,也可能是因为他们不喜欢在某个级别以下调整大小,使用自定义按钮可能会更好。

答案 1 :(得分:0)

为什么不在动画中将按钮的alpha值设置为0?或者你必须为它的高度设置动画吗?

答案 2 :(得分:0)

拍摄按钮的图像快照,并执行仿射变换动画向上旋转该视图,或更改y比例。