Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
Motion
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dmitriy Stepanets
Motion
Commits
969344f3
Unverified
Commit
969344f3
authored
Jun 10, 2017
by
Daniel Dahan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
reworked Motion class delegation handling
parent
adc55d38
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
127 additions
and
75 deletions
+127
-75
Sources/Motion.swift
+127
-75
No files found.
Sources/Motion.swift
View file @
969344f3
...
...
@@ -269,14 +269,14 @@ internal extension Motion {
fullScreenSnapshot
?
.
removeFromSuperview
()
}
override
func
complete
(
isFinished
finished
:
Bool
)
{
override
func
complete
(
isFinished
:
Bool
)
{
guard
isTransitioning
else
{
return
}
context
.
clean
()
if
f
inished
&&
isPresenting
&&
toOverFullScreen
{
if
isF
inished
&&
isPresenting
&&
toOverFullScreen
{
// finished presenting a overFullScreen VC
context
.
unhide
(
rootView
:
toView
)
context
.
removeSnapshots
(
rootView
:
toView
)
...
...
@@ -285,7 +285,7 @@ internal extension Motion {
fromViewController
!.
motionStoredSnapshot
=
container
fromView
.
removeFromSuperview
()
fromView
.
addSubview
(
container
)
}
else
if
!
f
inished
&&
!
isPresenting
&&
fromOverFullScreen
{
}
else
if
!
isF
inished
&&
!
isPresenting
&&
fromOverFullScreen
{
// cancelled dismissing a overFullScreen VC
context
.
unhide
(
rootView
:
fromView
)
context
.
removeSnapshots
(
rootView
:
fromView
)
...
...
@@ -301,7 +301,7 @@ internal extension Motion {
}
// move fromView & toView back from our container back to the one supplied by UIKit
if
(
toOverFullScreen
&&
isFinished
)
||
(
fromOverFullScreen
&&
!
f
inished
)
{
if
(
toOverFullScreen
&&
isFinished
)
||
(
fromOverFullScreen
&&
!
isF
inished
)
{
transitionContainer
.
addSubview
(
isFinished
?
fromView
:
toView
)
}
...
...
@@ -320,6 +320,23 @@ internal extension Motion {
let
fvc
=
fromViewController
let
tvc
=
toViewController
resetTransition
()
super
.
complete
(
isFinished
:
isFinished
)
if
isFinished
{
processEndTransitionDelegation
(
transitionContext
:
tContext
,
fromViewController
:
fvc
,
toViewController
:
tvc
)
}
else
{
processCancelTransitionDelegation
(
transitionContext
:
tContext
,
fromViewController
:
fvc
,
toViewController
:
tvc
)
}
tContext
?
.
completeTransition
(
isFinished
)
}
}
fileprivate
extension
Motion
{
/// Resets the transition values.
func
resetTransition
()
{
transitionContext
=
nil
fromViewController
=
nil
toViewController
=
nil
...
...
@@ -329,83 +346,13 @@ internal extension Motion {
forceNonInteractive
=
false
insertToViewFirst
=
false
defaultAnimation
=
.
auto
super
.
complete
(
isFinished
:
isFinished
)
if
finished
{
if
let
fvc
=
fvc
,
let
tvc
=
tvc
{
processForMotionDelegate
(
viewController
:
fvc
)
{
[
weak
self
]
in
guard
let
s
=
self
else
{
return
}
$0
.
motion
?(
motion
:
s
,
didEndTransitionTo
:
tvc
)
$0
.
motionDidEndTransition
?(
motion
:
s
)
}
processForMotionDelegate
(
viewController
:
tvc
)
{
[
weak
self
]
in
guard
let
s
=
self
else
{
return
}
$0
.
motion
?(
motion
:
s
,
didEndTransitionFrom
:
fvc
)
$0
.
motionDidEndTransition
?(
motion
:
s
)
}
}
tContext
?
.
finishInteractiveTransition
()
}
else
{
if
let
fvc
=
fvc
,
let
tvc
=
tvc
{
processForMotionDelegate
(
viewController
:
fvc
)
{
[
weak
self
]
in
guard
let
s
=
self
else
{
return
}
$0
.
motion
?(
motion
:
s
,
didCancelTransitionTo
:
tvc
)
$0
.
motionDidCancelTransition
?(
motion
:
s
)
}
processForMotionDelegate
(
viewController
:
tvc
)
{
[
weak
self
]
in
guard
let
s
=
self
else
{
return
}
$0
.
motion
?(
motion
:
s
,
didCancelTransitionFrom
:
fvc
)
$0
.
motionDidCancelTransition
?(
motion
:
s
)
}
}
tContext
?
.
cancelInteractiveTransition
()
}
tContext
?
.
completeTransition
(
finished
)
}
}
fileprivate
extension
Motion
{
/// Prepares the from and to view controllers.
func
prepareViewControllers
()
{
guard
let
fvc
=
fromViewController
,
let
tvc
=
toViewController
else
{
return
}
processForMotionDelegate
(
viewController
:
fvc
)
{
[
weak
self
]
in
guard
let
s
=
self
else
{
return
}
$0
.
motionWillStartTransition
?(
motion
:
s
)
$0
.
motion
?(
motion
:
s
,
willStartTransitionTo
:
tvc
)
}
processForMotionDelegate
(
viewController
:
tvc
)
{
[
weak
self
]
in
guard
let
s
=
self
else
{
return
}
$0
.
motionWillStartTransition
?(
motion
:
s
)
$0
.
motion
?(
motion
:
s
,
willStartTransitionFrom
:
fvc
)
}
processStartTransitionDelegation
(
fromViewController
:
fromViewController
,
toViewController
:
toViewController
)
}
/// Prepares the snapshot view, which hides any flashing that may occur.
...
...
@@ -475,6 +422,111 @@ fileprivate extension Motion {
}
#endif
}
/**
Processes the start transition delegation methods.
- Parameter fromViewController: An optional UIViewController.
- Parameter toViewController: An optional UIViewController.
*/
func
processStartTransitionDelegation
(
fromViewController
:
UIViewController
?,
toViewController
:
UIViewController
?)
{
guard
let
fvc
=
fromViewController
else
{
return
}
guard
let
tvc
=
toViewController
else
{
return
}
processForMotionDelegate
(
viewController
:
fvc
)
{
[
weak
self
]
in
guard
let
s
=
self
else
{
return
}
$0
.
motion
?(
motion
:
s
,
willStartTransitionTo
:
tvc
)
$0
.
motionWillStartTransition
?(
motion
:
s
)
}
processForMotionDelegate
(
viewController
:
tvc
)
{
[
weak
self
]
in
guard
let
s
=
self
else
{
return
}
$0
.
motion
?(
motion
:
s
,
willStartTransitionFrom
:
fvc
)
$0
.
motionWillStartTransition
?(
motion
:
s
)
}
}
/**
Processes the end transition delegation methods.
- Parameter transitionContext: An optional UIViewControllerContextTransitioning.
- Parameter fromViewController: An optional UIViewController.
- Parameter toViewController: An optional UIViewController.
*/
func
processEndTransitionDelegation
(
transitionContext
:
UIViewControllerContextTransitioning
?,
fromViewController
:
UIViewController
?,
toViewController
:
UIViewController
?)
{
guard
let
fvc
=
fromViewController
else
{
return
}
guard
let
tvc
=
toViewController
else
{
return
}
processForMotionDelegate
(
viewController
:
fvc
)
{
[
weak
self
]
in
guard
let
s
=
self
else
{
return
}
$0
.
motion
?(
motion
:
s
,
didEndTransitionTo
:
tvc
)
$0
.
motionDidEndTransition
?(
motion
:
s
)
}
processForMotionDelegate
(
viewController
:
tvc
)
{
[
weak
self
]
in
guard
let
s
=
self
else
{
return
}
$0
.
motion
?(
motion
:
s
,
didEndTransitionFrom
:
fvc
)
$0
.
motionDidEndTransition
?(
motion
:
s
)
}
transitionContext
?
.
finishInteractiveTransition
()
}
/**
Processes the cancel transition delegation methods.
- Parameter transitionContext: An optional UIViewControllerContextTransitioning.
- Parameter fromViewController: An optional UIViewController.
- Parameter toViewController: An optional UIViewController.
*/
func
processCancelTransitionDelegation
(
transitionContext
:
UIViewControllerContextTransitioning
?,
fromViewController
:
UIViewController
?,
toViewController
:
UIViewController
?)
{
guard
let
fvc
=
fromViewController
else
{
return
}
guard
let
tvc
=
toViewController
else
{
return
}
processForMotionDelegate
(
viewController
:
fvc
)
{
[
weak
self
]
in
guard
let
s
=
self
else
{
return
}
$0
.
motion
?(
motion
:
s
,
didCancelTransitionTo
:
tvc
)
$0
.
motionDidCancelTransition
?(
motion
:
s
)
}
processForMotionDelegate
(
viewController
:
tvc
)
{
[
weak
self
]
in
guard
let
s
=
self
else
{
return
}
$0
.
motion
?(
motion
:
s
,
didCancelTransitionFrom
:
fvc
)
$0
.
motionDidCancelTransition
?(
motion
:
s
)
}
transitionContext
?
.
finishInteractiveTransition
()
}
}
fileprivate
extension
Motion
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment