Commit 8836c5d4 by Daniel Dahan

development: added delay and duration to MotionTransition when presenting and…

development: added delay and duration to MotionTransition when presenting and dismissing view controllers
parent 14e2859c
...@@ -418,26 +418,36 @@ open class MotionTransitionPresentedAnimator: MotionTransitionDelegate, UIViewCo ...@@ -418,26 +418,36 @@ open class MotionTransitionPresentedAnimator: MotionTransitionDelegate, UIViewCo
toViewFinalFrame = transitionContext.finalFrame(for: toViewController) toViewFinalFrame = transitionContext.finalFrame(for: toViewController)
fromViewFinalFrame = transitionContext.finalFrame(for: fromViewController) fromViewFinalFrame = transitionContext.finalFrame(for: fromViewController)
var delay: TimeInterval = 0
var duration = transitionDuration(using: nil) var duration = transitionDuration(using: nil)
transitionContext.containerView.addSubview(toViewController.view) transitionContext.containerView.addSubview(toViewController.view)
for v in toViewController.view.subviews { for v in toViewController.view.subviews {
if 0 < v.transitionIdentifier.utf16.count { if 0 < v.transitionIdentifier.utf16.count {
for a in v.transitionAnimations { for v2 in fromViewController.view.subviews {
switch a { if v.transitionIdentifier == v2.transitionIdentifier {
case let .duration(dur): for ta in v.transitionAnimations {
if dur > duration { switch ta {
duration = dur case let .delay(time):
if time > delay {
delay = time
}
case let .duration(time):
if time > duration {
duration = time
}
default:break
}
} }
default:break
v.motion(v.transitionAnimations)
} }
} }
v.motion(v.transitionAnimations)
} }
} }
Motion.delay(duration) { Motion.delay(delay + duration) {
transitionContext.completeTransition(!transitionContext.transitionWasCancelled) transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
} }
} }
...@@ -476,28 +486,29 @@ open class MotionTransitionDismissedAnimator: MotionTransitionDelegate, UIViewCo ...@@ -476,28 +486,29 @@ open class MotionTransitionDismissedAnimator: MotionTransitionDelegate, UIViewCo
toViewFinalFrame = transitionContext.finalFrame(for: toViewController) toViewFinalFrame = transitionContext.finalFrame(for: toViewController)
fromViewFinalFrame = transitionContext.finalFrame(for: fromViewController) fromViewFinalFrame = transitionContext.finalFrame(for: fromViewController)
var delay: TimeInterval = 0
var duration = transitionDuration(using: nil) var duration = transitionDuration(using: nil)
for v in fromViewController.view.subviews { for v in fromViewController.view.subviews {
if 0 < v.transitionIdentifier.utf16.count { if 0 < v.transitionIdentifier.utf16.count {
for a in v.transitionAnimations {
switch a {
case let .duration(dur):
if dur > duration {
duration = dur
}
default:break
}
}
for v2 in toViewController.view.subviews { for v2 in toViewController.view.subviews {
if v.transitionIdentifier == v2.transitionIdentifier { if v.transitionIdentifier == v2.transitionIdentifier {
var d: TimeInterval = 0
var a = [CABasicAnimation]() var a = [CABasicAnimation]()
var tf = MotionAnimationTimingFunction.easeInEaseOut var tf = MotionAnimationTimingFunction.easeInEaseOut
for ta in v.transitionAnimations { for ta in v.transitionAnimations {
switch ta { switch ta {
case let .delay(time):
if time > delay {
delay = time
}
d = time
case let .duration(time):
if time > duration {
duration = time
}
case let .timingFunction(timingFunction): case let .timingFunction(timingFunction):
tf = timingFunction tf = timingFunction
case let .backgroundColor(color): case let .backgroundColor(color):
...@@ -520,18 +531,21 @@ open class MotionTransitionDismissedAnimator: MotionTransitionDelegate, UIViewCo ...@@ -520,18 +531,21 @@ open class MotionTransitionDismissedAnimator: MotionTransitionDelegate, UIViewCo
} }
} }
let g = Motion.animate(group: a, duration: duration) Motion.delay(d) {
g.fillMode = MotionAnimationFillModeToValue(mode: .forwards) let g = Motion.animate(group: a, duration: duration)
g.isRemovedOnCompletion = false g.fillMode = MotionAnimationFillModeToValue(mode: .forwards)
g.timingFunction = MotionAnimationTimingFunctionToValue(timingFunction: tf) g.isRemovedOnCompletion = false
g.timingFunction = MotionAnimationTimingFunctionToValue(timingFunction: tf)
v.animate(g)
v.animate(g)
}
} }
} }
} }
} }
Motion.delay(duration) { print("DELAY", delay + duration)
Motion.delay(delay + duration) {
transitionContext.completeTransition(!transitionContext.transitionWasCancelled) transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
} }
} }
......
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