使用UILabel的动画

时间:2012-08-31 10:33:59

标签: ios

我有一个包含4个值的数组,这些值将以2个不同的UILabel显示。我将成对分组。在特定的秒中,标签以递归的方式更改另一项对的值。

如果有可能,我想给动画一些淡出或左右滑动效果。

我已经看了一些内容,但没有任何意义。例如,这是一个工作动画(根据接受的答案):

[UIView animateWithDuration:1.0 delay:0.f options:(UIViewAnimationOptionAutoreverse| UIViewAnimationOptionRepeat)
   animations:^{
   playerScore.alpha=1.f;
   } completion:^(BOOL finished){
   playerScore.alpha=0.f;
   }];

我不确定在单独的方法或viewDidLoad中放置此代码的位置。任何人都可以提供线索和信息吗?这会很棒。

2 个答案:

答案 0 :(得分:15)

我不清楚为什么你需要这么多UILabel,因为当你改变当前UILabel中的文字时,你可以添加转换动画

UILabel *textLabel = // ... whatever

[textLabel setText:@"Initial text what I just write accidentally"];

CATransition *transitionAnimation = [CATransition animation];
[transitionAnimation setType:kCATransitionFade];
[transitionAnimation setDuration:0.3f];
[transitionAnimation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[transitionAnimation setFillMode:kCAFillModeBoth];
[textLabel.layer addAnimation:transitionAnimation forKey:@"fadeAnimation"];

[textLabel setText:@"New text will show after a nice fade effect"];

这是非常优雅和简单的解决方案。


更新(2016年1月6日)

注意:动画将在完成(或取消,或失败,或其他)后自动删除,并且您需要知道为每个会话重新生成动画或通过显式保持当前动画的活动状态将 removedOnCompletion 属性设置为 FALSE NO

答案 1 :(得分:1)

快速版@holex回答:

textLabel.text = "originalValue"

let textAnimation = CATransition()
textAnimation.type = kCATransitionFade
textAnimation.duration = 0.4

textLabel.layer.addAnimation(textAnimation, forKey: nil)
textLabel.text = "newValue"

如果您想要动画完成时的回调,请使用以下内容:

CATransaction.begin()
CATransaction.setCompletionBlock({
     print("Text Animation Complete!")
})

let textAnimation = CATransition()
textAnimation.type = kCATransitionFade
textAnimation.duration = 0.4

textLabel.layer.addAnimation(textAnimation, forKey: nil)
textLabel.text = "newValue"

CATransaction.commit()