10

我有一个包含 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. 任何人都可以提供线索和信息吗?那会很好。

4

2 回答 2

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显式保持当前动画处于活动状态。

于 2012-08-31T13:05:49.990 回答
1

@holex 的 Swift 版本回答:

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()
于 2016-01-06T17:48:18.927 回答