2011-01-21 58 views
3

我想创建一个“呼吸”的UIButton,将其alpha从1.0更改为0.7并重新返回。代码非常简单,但是当动画运行时,按钮不可点击。这是一个可惜的,一个按钮。我可以理解为什么当动画改变位置时按钮可能不可点击,但改变alpha对我来说似乎是无害的。有没有办法使按钮可点击,保持动画,而不是手工动画?如何制作带有动画Alpha的可点击的UIButton?

回答

10

使用不透明度。

UIButton *btnTest = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
btnTest.frame = CGRectMake(0, 0, 100, 100); 
[btnTest setTitle:@"Breathe" forState:UIControlStateNormal]; 
[btnTest addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:btnTest]; 

CABasicAnimation *fadeAnimation=[CABasicAnimation animationWithKeyPath:@"opacity"]; 
fadeAnimation.fromValue=[NSNumber numberWithFloat:0.7]; 
fadeAnimation.toValue=[NSNumber numberWithFloat:1.0]; 
fadeAnimation.duration=1.0; 
fadeAnimation.repeatCount=INFINITY; 
fadeAnimation.autoreverses=YES; 

[btnTest.layer addAnimation:fadeAnimation forKey:@"fadeInOut"]; 
+0

完美,这个工程。我试图在动画层而不是按钮之前,但我正在寻找`alpha`属性并忽略了`opacity`。无论哪种方式,它都不适用于隐式动画,您必须将动画直接附加到图层才能使按钮生效。谢谢! – zoul 2011-01-21 17:06:20