ios – 如何在Swift中开始下一个动画之前等待一个动画完成?
发布时间:2020-12-14 19:37:01 所属栏目:百科 来源:网络整理
导读:如何在 Swift中下一个动画开始之前等待一个动画完成?我一直在搞乱如果animation.animationDidStop … {},但它不会起作用. 这是我目前的一些代码: class ViewController: UIViewController {@IBOutlet weak var purpleRing: UIImageView!@IBOutlet weak var
如何在
Swift中下一个动画开始之前等待一个动画完成?我一直在搞乱如果animation.animationDidStop … {},但它不会起作用.
这是我目前的一些代码: class ViewController: UIViewController { @IBOutlet weak var purpleRing: UIImageView! @IBOutlet weak var beforeCountdownAnimation: UIImageView! var imageArray = [UIImage]() var imageArray2 = [UIImage]() override func viewDidLoad() { super.viewDidLoad() for e in -17...0 { let imageName2 = "(e)" imageArray2.append(UIImage(named: imageName2)!) } for t in 1...97 { let imageName = "(t)" imageArray.append(UIImage(named: imageName)!) } } func startAnimation() -> Void { purpleRing.animationImages = imageArray purpleRing.animationDuration = 5.0 purpleRing.startAnimating() } func startAnimation2() -> Void { beforeCountdownAnimation.animationImages = imageArray2 beforeCountdownAnimation.animationDuration = 1.0 beforeCountdownAnimation.startAnimating() } @IBAction func startAnimations(sender: AnyObject) { startAnimation() startAnimation2() } 解决方法
嗯,可能之前回答过,但你可以使用Grand Central Dispatch dispatc_aysnc.
我们的想法是,您知道动画持续时间,因此您可以使用它来告诉GDC何时执行下一个代码.所以类似于: // call animation 1,which you specified to have 5 second duration CGFloat animation1Duration = 5.0; CGFloat animation2Duration = 7.0; playAnimation1WithDuration(animation1Duration); // calling second animation block of code after 5.0 using GDC dispatch_after(dispatch_time(DISPATCH_TIME_NOW,Int64(animation1Duration * Double(NSEC_PER_SEC))),dispatch_get_main_queue(),{ () -> Void in print("5.0 has passed"); // call second animation block here playAnimation2WithDuration(animation2Duration); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |