触摸时淡出UIButton
问题描述:
对于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];
干杯
聂
答
由于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];
谢谢,这将正常工作。 :-) – niklassaers