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