我有一个图像,我使用此代码为viewDidAppear设置动画:
UIView.animateWithDuration(10.5,delay:0.0,options: [],animations:{ self.myImage.transform = CGAffineTransformMakeTranslation(0.0,200) },completion: nil)
我想点击myPauseButton时暂停动画,如果我再次点击它,则恢复动画.
解决方法
暂停和恢复动画的2个功能,我从
here开始转换为Swift.
func pauseLayer(layer: CALayer) { let pausedTime: CFTimeInterval = layer.convertTime(CACurrentMediaTime(),fromLayer: nil) layer.speed = 0.0 layer.timeOffset = pausedTime } func resumeLayer(layer: CALayer) { let pausedTime: CFTimeInterval = layer.timeOffset layer.speed = 1.0 layer.timeOffset = 0.0 layer.beginTime = 0.0 let timeSincePause: CFTimeInterval = layer.convertTime(CACurrentMediaTime(),fromLayer: nil) - pausedTime layer.beginTime = timeSincePause }
我有一个按钮来暂停或恢复在viewDidLoad中初始化的动画:
var pause = false override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) UIView.animateWithDuration(10.5,animations:{ self.image.transform = CGAffineTransformMakeTranslation(0.0,200) },completion: nil) } @IBAction func changeState() { let layer = image.layer pause = !pause if pause { pauseLayer(layer) } else { resumeLayer(layer) } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。