Commit 601c787a by Daniel Dahan

minor cleanup

parent 7f734fe0
......@@ -145,6 +145,7 @@
965FE9781FE1D8120098BDD0 /* Transition */ = {
isa = PBXGroup;
children = (
965FE9641FDCCE910098BDD0 /* MotionProgressRunner.swift */,
965FE9791FE1D83D0098BDD0 /* MotionTransition.swift */,
965FE9661FDD99800098BDD0 /* MotionTransition+Start.swift */,
965FE96E1FDEFA8B0098BDD0 /* MotionTransition+Animate.swift */,
......@@ -181,7 +182,6 @@
96E409BC1F24FC300015A2B5 /* LICENSE */,
96E4094F1F24F7370015A2B5 /* Motion.h */,
965FE9681FDDA1F20098BDD0 /* MotionViewOrderStrategy.swift */,
965FE9641FDCCE910098BDD0 /* MotionProgressRunner.swift */,
96E409511F24F7370015A2B5 /* MotionAnimation.swift */,
96E409521F24F7370015A2B5 /* MotionAnimationState.swift */,
96E409531F24F7370015A2B5 /* MotionCAAnimation.swift */,
......
......@@ -37,39 +37,39 @@ class MotionProgressRunner {
weak var delegate: MotionProgressRunnerDelegate?
var isRunning: Bool {
return displayLink != nil
return nil != displayLink
}
internal var timePassed: TimeInterval = 0
internal var progress: TimeInterval = 0
internal var duration: TimeInterval = 0
internal var displayLink: CADisplayLink?
internal var isReversed: Bool = false
@objc
func displayUpdate(_ link: CADisplayLink) {
timePassed += isReversed ? -link.duration : link.duration
progress += isReversed ? -link.duration : link.duration
if isReversed, timePassed <= 1.0 / 120 {
if isReversed, progress <= 1.0 / 120 {
delegate?.complete(isFinishing: false)
stop()
return
}
if !isReversed, timePassed > duration - 1.0 / 120 {
if !isReversed, progress > duration - 1.0 / 120 {
delegate?.complete(isFinishing: true)
stop()
return
}
delegate?.update(progress: timePassed / duration)
delegate?.update(progress: progress / duration)
}
func start(timePassed: TimeInterval, totalTime: TimeInterval, reverse: Bool) {
func start(progress: TimeInterval, duration: TimeInterval, isReversed: Bool) {
stop()
self.timePassed = timePassed
self.isReversed = reverse
self.duration = totalTime
self.progress = progress
self.isReversed = isReversed
self.duration = duration
displayLink = CADisplayLink(target: self, selector: #selector(displayUpdate(_:)))
displayLink!.add(to: RunLoop.main, forMode: RunLoopMode(rawValue: RunLoopMode.commonModes.rawValue))
......
......@@ -31,27 +31,6 @@ import UIKit
extension MotionTransition {
/**
Complete the transition.
- Parameter after: A TimeInterval.
- Parameter isFinishing: A Boolean indicating if the transition
has completed.
*/
func complete(after: TimeInterval, isFinishing: Bool) {
guard [MotionTransitionState.animating, .starting, .notified].contains(state) else {
return
}
if after <= 1.0 / 120 {
complete(isFinishing: isFinishing)
return
}
let totalTime = after / (isFinishing ? max((1 - progress), 0.01) : max(progress, 0.01))
progressRunner.start(timePassed: progress * totalTime, totalTime: totalTime, reverse: !isFinishing)
}
/**
Complete the transition.
- Parameter isFinishing: A Boolean indicating if the transition
has completed.
*/
......
......@@ -402,6 +402,27 @@ open class MotionTransition: NSObject {
internal override init() {
super.init()
}
/**
Complete the transition.
- Parameter after: A TimeInterval.
- Parameter isFinishing: A Boolean indicating if the transition
has completed.
*/
func complete(after: TimeInterval, isFinishing: Bool) {
guard [MotionTransitionState.animating, .starting, .notified].contains(state) else {
return
}
if after <= 1.0 / 120 {
complete(isFinishing: isFinishing)
return
}
let duration = after / (isFinishing ? max((1 - progress), 0.01) : max(progress, 0.01))
progressRunner.start(progress: progress * duration, duration: duration, isReversed: !isFinishing)
}
}
extension MotionTransition: MotionProgressRunnerDelegate {
......@@ -529,12 +550,12 @@ internal extension MotionTransition {
tvc.beginAppearanceTransition(true, animated: true)
processForMotionDelegate(viewController: fvc) { [weak self] in
guard let s = self else {
guard let `self` = self else {
return
}
$0.motion?(motion: s, willStartTransitionTo: tvc)
$0.motionWillStartTransition?(motion: s)
$0.motion?(motion: self, willStartTransitionTo: tvc)
$0.motionWillStartTransition?(motion: self)
}
processForMotionDelegate(viewController: tvc) { [weak self] in
......@@ -566,21 +587,21 @@ internal extension MotionTransition {
fvc.endAppearanceTransition()
processForMotionDelegate(viewController: fvc) { [weak self] in
guard let s = self else {
guard let `self` = self else {
return
}
$0.motion?(motion: s, didEndTransitionTo: tvc)
$0.motionDidEndTransition?(motion: s)
$0.motion?(motion: self, didEndTransitionTo: tvc)
$0.motionDidEndTransition?(motion: self)
}
processForMotionDelegate(viewController: tvc) { [weak self] in
guard let s = self else {
guard let `self` = self else {
return
}
$0.motion?(motion: s, didEndTransitionFrom: fvc)
$0.motionDidEndTransition?(motion: s)
$0.motion?(motion: self, didEndTransitionFrom: fvc)
$0.motionDidEndTransition?(motion: self)
}
transitionContext?.finishInteractiveTransition()
......@@ -605,21 +626,21 @@ internal extension MotionTransition {
fvc.endAppearanceTransition()
processForMotionDelegate(viewController: fvc) { [weak self] in
guard let s = self else {
guard let `self` = self else {
return
}
$0.motion?(motion: s, didCancelTransitionTo: tvc)
$0.motionDidCancelTransition?(motion: s)
$0.motion?(motion: self, didCancelTransitionTo: tvc)
$0.motionDidCancelTransition?(motion: self)
}
processForMotionDelegate(viewController: tvc) { [weak self] in
guard let s = self else {
guard let `self` = self else {
return
}
$0.motion?(motion: s, didCancelTransitionFrom: fvc)
$0.motionDidCancelTransition?(motion: s)
$0.motion?(motion: self, didCancelTransitionFrom: fvc)
$0.motionDidCancelTransition?(motion: self)
}
transitionContext?.finishInteractiveTransition()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment