我注意到当我切换到另一个视图然后回到主视图时,我的闪烁动画停止了工作。点击将其带到另一个视图,按钮将其返回到主视图。这是我的代码:
用于闪烁动画:
import Foundation
导入UIKit
扩展名UILabel {
func startBlink() {
UIView.animate(withDuration: 0.8,
delay:0.0,
options:[.autoreverse, .repeat],
animations: {
self.alpha = 0
}, completion: nil)
}
func stopBlink() {
alpha = 1
layer.removeAllAnimations()
}
}
按钮将其带回主屏幕的操作:
@IBAction func mainMenuTapped(_ sender: Any) {
performSegue(withIdentifier: "EndToMain", sender: self)
}
启动闪烁动画的主视图代码:
@IBOutlet weak var tapToPlayLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
tapToPlayLabel.startBlink()
}
感谢您的帮助!
答案 0 :(得分:1)
查看iOS UIView
生命周期,了解调用哪些方法。
将tapToPlayLabel.startBlink()
从viewDidLoad中取出,并将其放入viewDidAppear
或viewWillAppear
,如下所示:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
tapToPlayLabel.startBlink()
}
答案 1 :(得分:0)
大多数时候,当切换回原始视图时,UIView动画自定义方法不起作用。要完成这项工作,您需要指定一些与该自定义动画相关的初始值。
以下是示例:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.tapToPlayLabel.alpa = 20
self.tapToPlayLabel.layoutIfNeeded()
self.tapToPlayLabel.startBlink()
}