繁体   English   中英

Xcode Swift动画透明度错误

[英]Xcode Swift animation transparency error

我的目标是让label0随着label1更改透明度来动态更改文本。 这是我用于label1动画的一部分代码:

        UIView.animateWithDuration(2.0, animations: { () -> Void in
        self.label1.alpha = 0.0
        //this is what happens after "tIme"
        dispatch_after(tIme1, dispatch_get_main_queue()) {
            UIView.animateWithDuration(2.0, animations: { () -> Void in
                self.label1.alpha = 1.0
            })
            dispatch_after(tIme20, dispatch_get_main_queue()) {
                UIView.animateWithDuration(5.0, animations: { () -> Void in
                    self.label1.alpha = 0.0
                })
            }
        }

    })

它基本上是从透明开始的,在1s之后逐渐消失为完全可见,在20s之后又回到透明。 这部分代码有效^

不起作用的部分是应该更改label0

        if(label1.alpha == 0.0)    {
        self.label0.text = "transparent"
    }
    else {
        self.label0.text = "visible"
    }

我想这样做是很自我解释的。 如果label1是透明的,则使label0说“透明”,否则说“可见”。 问题在于,即使在label1可见的情况下,它仍然会说“透明”。

我该如何解决?

如果您需要任何澄清,请随时询问。

编辑:我不可能更改动画,因为我需要做的是在ViewDidLoad上显示一些文本,在ViewDidAppear上显示其他文本。 我可以轻松地做到这一点,但是由于它的文字不同,所以第一次打开应用程序时它会重叠。 因此,我需要做的是等待第一个文本消失,然后检查其是否不可见。 如果是这样,我可以在ViewDidAppear上显示第二个文本。

问题与这些线有关

dispatch_after(tIme1, dispatch_get_main_queue()) {

这行告诉我们的是“在tIme1秒后将此块分配到主线程”:

 UIView.animateWithDuration(2.0, animations: { () -> Void in
      self.label1.alpha = 1.0
 })

这里的第一个问题是dispatch_after不保证该块将在tIme1之后运行。 该行保证了该块将在tIme1秒内分派到主线程。 iOS会说出何时运行。 然后,您将运行另一个异步块,该块将在iOS希望其运行时运行。

在所有这些不确定性的情况下,您如何测试alpha是0还是1?

而且,我非常确定标签的text属性不可动画。 文本将突然从一件事变成另一件事。

您需要使用以下命令连接所有动画:

UIView.animateWithDuration(2.0, animations: {
  self.label1.alpha = 0.0
  self.label0.text = "transparent"

  }, completion: { // first animation is complete... running this block
    (value: Bool) in

    UIView.animateWithDuration(2.0, animations: {
      self.label1.alpha = 1.0
      self.label0.text = "visible"

      }, completion: { // second animation is complete... running this block
        (value: Bool) in

        UIView.animateWithDuration(20.0, animations: {
          self.label1.alpha = 0.0
          self.label0.text = "transparent"
          })
    })
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM