2009-10-04 79 views
3

对于UIButton,我已经有了UIButton的Selected-state和Normal-state。当一个按钮被触摸时,我希望它在选定状态下触发,然后在一秒钟内恢复到正常状态。当按下UIButton * btn时,我设置了以下动画,但它只是再次切换回到取消选择状态。我应该如何去实现这个目标?触摸时淡出UIButton

[btn setSelected:YES]; 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:1.0f]; 
[btn setSelected:NO]; 
[UIView commitAnimations]; 

干杯

回答

12

由于selected不是动画的财产,这是行不通的(如你发现了)。我的解决方案是将btn的选定状态放置在位于完全相同位置的按钮正下方的单独UIImageView中。然后在敲击按键的操作:

- (void) tapButton:(UIButton *)btn { 
    btn.alpha = 0; 
    [[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:1]; 
    [UIView setAnimationDelegate:[UIApplication sharedApplication]]; 
    [UIView setAnimationDidStopSelector:@selector(endIgnoringInteractionEvents)]; 
    btn.alpha = 1; 
    [UIView commitAnimations]; 
} 

注意我还添加了begin/endIgnoringInteractionEvents的电话,以而它的衰落恢复到正常状态,用户无法在按钮上点击。如果你想允许,begin/end呼叫[UIView setAnimationBeginsFromCurrentState];

+1

谢谢,这将正常工作。 :-) – niklassaers