从后台返回时动画 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
我的 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