Skip to content

Instantly share code, notes, and snippets.

@glm4
Created May 7, 2018 18:45
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 glm4/d2a8d31bef2151c7a21c393125895b7a to your computer and use it in GitHub Desktop.
Save glm4/d2a8d31bef2151c7a21c393125895b7a to your computer and use it in GitHub Desktop.
Helper methods to control CALayer i.e Interactive transitions
import Foundation
extension CALayer {
func pause() -> TimeInterval {
if #available(iOS 11, *) {
let pausedTime = convertTime(CACurrentMediaTime(), from: nil)
speed = 0
timeOffset = pausedTime
return pausedTime
}
speed = 0
return timeOffset
}
func resume(from pauseTime: TimeInterval? = nil) {
let pausedTime = pauseTime ?? timeOffset
speed = 1
timeOffset = 0
beginTime = 0
let timeSincePause = convertTime(CACurrentMediaTime(), from: nil) - pausedTime
beginTime = timeSincePause
}
func rewind(finishTime: Double) {
speed = -1
if #available(iOS 11, *) {
beginTime = CACurrentMediaTime()
DispatchQueue.main.asyncAfter(deadline: .now() + finishTime) {
self.speed = 1
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment