触摸时淡出UIButton

时间:2009-10-04 19:09:10

标签: iphone cocoa-touch uikit uibutton

我有一个UIBut的选择状态和正常状态都是UIImages。触摸按钮时,我希望它能够达到选定状态,然后在一秒钟内恢复正常状态。我按下UIButton * btn时设置了以下动画,但它只是再次切换回取消选择状态。我该如何实现这个目标呢?

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

干杯

的Nik

1 个答案:

答案 0 :(得分: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];