3

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

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

干杯

尼克

4

1 回答 1

13

由于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];

于 2009-10-04T19:13:54.773 回答