UIButton与UIButtonTypeCustom动画错误

问题描述:

因此,UIButtons的动画大小转换似乎存在问题。具体而言,如果您有一个类型为UIButtonTypeCustom的按钮,则任何帧大小转换都会立即发生。运动和其他动画正常发生。UIButton与UIButtonTypeCustom动画错误

有没有人有很好的解决这个问题?我是猜测,这是因为自定义按钮包含图像,并且UIView计算其转换时出现问题。

This guy似乎找到了同样的问题,但没有解决方法。

下面是一个例子。图像原点将在两秒内从0.0.0.0到100.0,100.0平滑移动,但尺寸立即跳转到200x200。

UIButton *tButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[tButton setBackgroundImage:tImage forState:UIControlStateNormal]; 
tButton.frame = CGRectMake(0.0, 0.0, 10.0, 10.0); 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationDuration:2.0]; 

tButton.frame = CGRectMake(100.0, 100.0, 200.0, 200.0); 

[UIView commitAnimations]; 
+0

实际上,在调用setBackgroundImage之后该错误开始显示,看起来像它的类型没有区别。可以通过设置按钮的层,以所希望的图像的内容属性测试(您需要#IMPORT 并添加QuartzCore.framework): tButton.layer.contents =(ID)的TImage。 CGImage; 同时保持其类型设置为UIButtonTypeCustom和移除调用了setBackgroundImage: – Russian 2011-10-28 16:28:16

+0

@Russian - 有趣的...我不知道如果按钮框架实际上是动画顺利,但图像本身立即重新调整,只是透支。我必须测试一下。 – DougW 2011-10-28 17:11:22

幸得davbryn这个答案,但不是重新定义您使用的框架:

button.transform = CGAffineTransformMakeScale(1.5,1.5); 

它不那么容易,因为只使用一个新的框架,所以你将不得不玩的它但它应该让你指出正确的方向。