Animate UIButton's title change

 ̄綄美尐妖づ 提交于 2020-01-11 20:09:30

问题


Here I found how to animate UIButton's title change using now-deprecated beginAnimations:context: method:

UIBUtton title animation for iPhone

How to do the same thing using current APIs?

Update:

I've tried to use block-based animations:

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

The color change is not animated.


回答1:


Use blocks:

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

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

} completion:nil];



回答2:


Swift

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:


In addition to AnimationGroups, there are generally two kinds of animations, one is for property animation, the other is for animating something like your content,transition or anything that cannot use property to do animation. So the second solution is your choice,and you can achieve this by two ways: use 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];

the other way is using a UIKit block as @jjv360 said, but you can't animate color inside it because obviously color can't be flipped.



来源:https://stackoverflow.com/questions/13231947/animate-uibuttons-title-change

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!