【问题标题】:Cross-Fade Between Two UILabels两个 UILabel 之间的交叉淡入淡出
【发布时间】:2010-12-22 07:45:14
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    这将使一个标签(或任何视图)淡出,同时淡入另一个标签。动画进行到一半时,两者的不透明度都为 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];
    

    【讨论】:

      【解决方案2】:

      您可以摆弄动画曲线,尝试找到可接受的外观,但我认为您最好只在两个标签下方保留第三个视图,以在发生淡入淡出时保持背景外观。

      如果您的意思是您可以同时看到两个标签不会同时淡化,而是快速淡化到标签开始不清晰的程度,请将其替换为具有相同淡化级别的新标签,然后淡化它快速达到全面可见。

      我说的是“淡入淡出”,但在标签顶部放置一个背景色视图并继续使该视图更加不透明,切换下面的标签,然后再次将其淡化为透明,看起来也很好。

      【讨论】:

      • 谢谢亚当。有没有其他更优雅的方法来解决这个问题,而不必使用额外的视图?我提到了CABasicAnimation,因为我看到有人谈论使用@"opacity" 键在UILabels 之间进行成功的交叉淡入淡出,但我不知道如何使用这种方法。
      • drawonward 的上述解决方案是使用 .alpha 属性来执行我所描述的操作。我不确定 opacity 键如何使它看起来非常不同。在按照描述进行淡入淡出时,标签允许背景显示的确切问题是什么?如果是这样,我认为第三种观点可能不是非常聪明,但它并不费力,应该会产生结果。
      【解决方案3】:

      我已经实现了类似的东西并且效果很好。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-25
        • 2011-04-19
        相关资源
        最近更新 更多