Skip to content

Commit

Permalink
minor cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel Dahan committed Dec 20, 2017
1 parent 7f734fe commit 601c787
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 47 deletions.
2 changes: 1 addition & 1 deletion Motion.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@
965FE9781FE1D8120098BDD0 /* Transition */ = {
isa = PBXGroup;
children = (
965FE9641FDCCE910098BDD0 /* MotionProgressRunner.swift */,
965FE9791FE1D83D0098BDD0 /* MotionTransition.swift */,
965FE9661FDD99800098BDD0 /* MotionTransition+Start.swift */,
965FE96E1FDEFA8B0098BDD0 /* MotionTransition+Animate.swift */,
Expand Down Expand Up @@ -181,7 +182,6 @@
96E409BC1F24FC300015A2B5 /* LICENSE */,
96E4094F1F24F7370015A2B5 /* Motion.h */,
965FE9681FDDA1F20098BDD0 /* MotionViewOrderStrategy.swift */,
965FE9641FDCCE910098BDD0 /* MotionProgressRunner.swift */,
96E409511F24F7370015A2B5 /* MotionAnimation.swift */,
96E409521F24F7370015A2B5 /* MotionAnimationState.swift */,
96E409531F24F7370015A2B5 /* MotionCAAnimation.swift */,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
21 changes: 0 additions & 21 deletions Sources/Transition/MotionTransition+Complete.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,27 +29,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
Expand Down
51 changes: 36 additions & 15 deletions Sources/Transition/MotionTransition.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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()
Expand All @@ -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()
Expand Down

0 comments on commit 601c787

Please sign in to comment.