Swift - 切换视图和返回时动画无效

时间:2017-07-11 23:23:46

标签: swift animation label

我注意到当我切换到另一个视图然后回到主视图时,我的闪烁动画停止了工作。点击将其带到另一个视图,按钮将其返回到主视图。这是我的代码:

用于闪烁动画:

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()

}

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

查看iOS UIView生命周期,了解调用哪些方法。

tapToPlayLabel.startBlink()从viewDidLoad中取出,并将其放入viewDidAppearviewWillAppear,如下所示:

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()
}