Анимация изменения названия UIButton - программирование
Подтвердить что ты не робот

Анимация изменения названия UIButton

Здесь я нашел, как оживить UIButton изменение названия с помощью метода устаревших beginAnimations:context::

анимация заголовка UIBUtton для iPhone

Как сделать то же самое с помощью существующих API?

Update:

Я попытался использовать блочные анимации:

NSTimeInterval animationDuration = animated ? 1.f : 0.f;
[UIView animateWithDuration:animationDuration delay:0.f options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction animations:^{
    [button setTitle:newTitle forState:UIControlStateNormal];
    [button setTitleColor:newTitleColor forState:UIControlStateNormal];
} completion:nil];

Изменение цвета не анимируется.

4b9b3361

Ответ 1

Использовать блоки:

[UIView transitionWithView:self.flipLabelButton duration:1 options:UIViewAnimationOptionTransitionFlipFromRight animations:^{

    [self.flipLabelButton setTitle:newText forState:UIControlStateNormal];

} completion:nil];

Ответ 2

Swift 3

UIView.transition(with: button, duration: 0.5, options: .transitionCrossDissolve, animations: {
  self.button.setTitle("WOW, new title", for: .normal)
  self.button.setTitleColor(UIColor.red, for: .normal)
}, completion: nil)

Ответ 3

В дополнение к AnimationGroups обычно существует два вида анимаций: один для анимации свойств, другой - для анимации чего-то вроде вашего контента, перехода или чего-либо, что не может использовать свойство для анимации. Итак, второе решение - ваш выбор, и вы можете достичь этого двумя способами: использование CATransition:

CATransition *transition = [CATransition animation];
transition.type = kCATransitionFade;
transition.duration = 1;
[button.layer addAnimation:transition forKey:kCATransition];
[button setTitle:newTitle forState:UIControlStateNormal];
[button setTitleColor:newColor forState:UIControlStateNormal];

другой способ использует блок UIKit, как сказал @jjv360, но вы не можете анимировать цвет внутри него, потому что, очевидно, цвет не может быть перевернут.