UIButton标题更改的动画效果

29

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

iPhone上的UIBUtton标题动画

如何使用当前的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参考文献中有解释:http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html,并清晰地解释了`beginAnimations:context:`的替代方法。 - A-Live
3个回答

54

使用区块:

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

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

} completion:nil];

就这样了?我以为只有被记录为“可动画化”的属性才能用这种方式进行动画。难道不是吗? - Rudolf Adamkovič
如果您使用的是animate函数,那么过渡函数也可以适用于整个视图,因此对于所有内容都有效。 - jjv360
我已更新我的问题。它仍然无法动画。有任何想法吗? - Rudolf Adamkovič
1
你正在使用动画而不是过渡效果... 应该使用 [UIView transitionWithView:button duration:animationDuration options:UIViewAnimationOptionTransitionFlipFromRight animations:^{... - jjv360
如果你想要一个淡入淡出的效果,你也可以使用 UIViewAnimationOptionTransitionCrossDissolve - jjv360

34

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)

8
除了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所述, 但您不能在其中动画颜色,因为明显颜色无法翻转。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接