动画 UIButton 的标题更改

Posted

技术标签:

【中文标题】动画 UIButton 的标题更改【英文标题】:Animate UIButton's title change 【发布时间】:2012-11-05 12:16:31 【问题描述】:

在这里,我找到了如何使用现已弃用的 beginAnimations:context: 方法为 UIButton 的标题更改设置动画:

UIBUtton title animation for iPhone

如何使用当前的 API 做同样的事情?

更新:

我尝试使用基于块的动画:

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

颜色变化不是动画的。

【问题讨论】:

请查看文档,所有的解释都在 UIView 参考:developer.apple.com/library/ios/#documentation/uikit/reference/… 中清楚地解释了beginAnimations:context: 的替换。 【参考方案1】:

使用方块:

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

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

 completion:nil];

【讨论】:

就这样?我认为只有记录为“动画”的属性才能以这种方式进行动画处理。还是不行? 如果您使用的是动画功能,但过渡功能适用于所有内容,因为它适用于整个视图。 我已经更新了我的问题。它仍然没有动画。有什么想法吗? 你使用的是动画而不是过渡...应该是[UIView transitionWithView:button duration:animationDuration options:UIViewAnimationOptionTransitionFlipFromRight animations:^... 如果你想要淡化效果也可以使用UIViewAnimationOptionTransitionCrossDissolve【参考方案2】:

斯威夫特

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

另一种方法是使用 @jjv360 所说的 UIKit 块, 但是您不能在其中设置颜色动画,因为显然颜色无法翻转。

【讨论】:

以上是关于动画 UIButton 的标题更改的主要内容,如果未能解决你的问题,请参考以下文章

如何在标题更改时停止不需要的 UIButton 动画?

使用swift更改动画块内的UIbutton

重复 UIButton 动画并更改背景

使用时间和动画从字符串数组中更改 UILabel/UIButton 文本

滚动时更改 UIButton 色调颜色

更改 UIButton 标题导航栏的颜色