从后台返回时动画 UILabel 消失

Animated UILabel disappears when returning from background

我的 UILabel 反复淡入淡出,但是当应用程序 returns 从背景中消失时,文本消失了。

我尝试了以下方法,但没有用,

override func viewDidLoad() {
        super.viewDidLoad()
        NotificationCenter.default.addObserver(self, selector: #selector(fadeText), name: UIApplication.willEnterForegroundNotification, object: nil)
}
    func fadeInThenOut(label : UILabel, delay: TimeInterval) {

         UILabel.animate(withDuration: 2.0, delay: delay, options: [UILabel.AnimationOptions.autoreverse, UILabel.AnimationOptions.repeat], animations: {
            view.alpha = 0
        }, completion: nil)

    }

@objc func fadeText() {
        fadeInThenOut(label: textLabel, delay: 0)
    }

 override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        fadeText()

    }

willEnterForegroundNotification 更改为 didBecomeActiveNotification,如下所示:

NotificationCenter.default.addObserver(self, selector: #selector(fadeText), name: UIApplication.didBecomeActiveNotification, object: nil)

那么你的选择器应该有一个初始的 alpha 值 self.view:

  @objc func fadeText() {
        self.view.alpha = 1
        fadeInThenOut(label: label, delay: 0)
    }

现在您不需要 ViewDidAppear.

中的代码

您的整个代码应如下所示:

override func viewDidLoad() {
    super.viewDidLoad()
    NotificationCenter.default.addObserver(self, selector: #selector(fadeText), name: UIApplication.didBecomeActiveNotification, object: nil)
}

func fadeInThenOut(label : UILabel, delay: TimeInterval) {
    UILabel.animate(withDuration: 2.0, delay: delay, options: [UILabel.AnimationOptions.autoreverse, UILabel.AnimationOptions.repeat], animations: {
        self.view.alpha = 0
    }, completion: { (finished: Bool) in
        print("done")
    })

}

@objc func fadeText() {
    self.view.alpha = 1
    fadeInThenOut(label: textLabel, delay: 0)
}

更新: 上面的代码动画 self.view,而不是 textLabel。如果你只想为标签设置动画,那么在 fadeInThenOut()fadeText()

中将 self.view.alpha 更改为 self.textLabel.alpha