Skip to content

Instantly share code, notes, and snippets.

@bumaociyuan
Created March 15, 2016 08:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bumaociyuan/ce0785357c25a02cc068 to your computer and use it in GitHub Desktop.
Save bumaociyuan/ce0785357c25a02cc068 to your computer and use it in GitHub Desktop.
@IBAction func moveBlock(sender: AnyObject) {
UIView.animateWithDuration(3, animations: { () -> Void in
self.viewToAnimate.frame = .zero
}) { (success) -> Void in
}
}
@IBAction func stop(sender: AnyObject) {
if viewToAnimate.layer.speed == 0 {
resumeLayer(viewToAnimate.layer)
} else {
pauseLayer(viewToAnimate.layer)
}
}
// http://stackoverflow.com/questions/33994520/how-to-pause-and-resume-uiview-animatewithduration
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
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment