我想创建一个“呼吸”的UIButton,将其alpha值从1.0更改为0.7,然后再次返回,重复执行。代码很简单,但是当动画运行时,该按钮不可单击。可惜的是,一个按钮。我可以理解为什么动画更改其位置时按钮可能无法单击,但是更改alpha似乎对我无害。有没有一种方法可以使按钮可单击,保持动画并且不手工动画?

最佳答案

使用不透明度。

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"];

10-06 09:34