2011-01-21 60 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