Затухание UIButton при прикосновении - PullRequest
3 голосов
/ 04 октября 2009

У меня есть выбранное состояние и нормальное состояние для кнопки UIB, которые оба являются UIImages. Когда кнопка нажата, я бы хотел, чтобы она нажала на выбранное состояние и затем вернулась в нормальное состояние в течение одной секунды. Я установил следующую анимацию, когда нажата UIButton * btn, но он просто снова переключается обратно в невыбранное состояние. Как мне добиться этого?

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

Приветствия

Nik

1 Ответ

12 голосов
/ 04 октября 2009

Поскольку 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];

...