两个UILabels之间的交叉淡入淡出

时间:2010-12-22 07:45:14

标签: iphone cocoa-touch core-animation caanimation cabasicanimation

假设我有两个UILabel s(labelOnelabelTwo),我需要在两个标签之间交叉淡入淡出。达到这种效果的最佳方法是什么?

我已尝试使用[UIView beginAnimations:@"crossFade" context:nil];等淡出labelOne然后淡入labelTwo但是当两个标签处于低不透明度且你有一个相当明显的差距时可以看透两者。我需要一个漂亮干净的交叉淡入淡出效果。我觉得我需要使用CABasicAnimation,但我会感谢一些指导。提前谢谢!

3 个答案:

答案 0 :(得分:2)

这将使一个标签(或任何视图)淡出,同时淡入另一个标签。在动画的一半,两者都将达到50%的不透明度。要分别控制alpha,请为每个标签使用单独的动画并延迟其中一个。

label_to_show.alpha = 0.0;
label_to_hide.alpha = 1.0;

[UIView beginAnimations:nil context:nil];

label_to_show.alpha = 1.0;
label_to_hide.alpha = 0.0;

[UIView commitAnimations];

答案 1 :(得分:0)

你可以摆弄动画曲线尝试并找到一个可以接受的外观,但我认为你会做得更好,只需在两个标签下面保持第三个视图,以便在衰落发生时保持背景外观。

如果您的意思是您可以同时看到两个标签不会同时褪色,但会快速淡化到标签开始不清楚的位置,请将其替换为同一渐变级别的新标签,然后将其淡化迅速达到全面可见度。

我说“褪色”但是在标签顶部放置背景色的视图并继续使视图更加不透明,切换下面的标签,然后再将其淡化为透明也可能看起来非常好。

答案 2 :(得分:0)

我已经实现了类似的功能,但效果非常好。

[UIView transitionWithView:self duration:0.3 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
    _label1.hidden = YES;
    _label2.hidden = NO;
} completion:nil];