Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
Material
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
Material
Commits
3aef3675
Unverified
Commit
3aef3675
authored
Jan 27, 2017
by
Daniel Dahan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
development: simplified MotionTransition rotation code
parent
5e35f736
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
33 additions
and
45 deletions
+33
-45
Sources/iOS/MotionTransition.swift
+33
-45
No files found.
Sources/iOS/MotionTransition.swift
View file @
3aef3675
...
...
@@ -39,7 +39,7 @@ fileprivate struct MotionTransitionItem {
}
fileprivate
struct
MotionTransitionItemController
{
fileprivate
var
delegate
:
MotionTransition
Delegate
fileprivate
var
delegate
:
MotionTransition
Animator
}
fileprivate
func
getRotationInDegrees
(
view
:
UIView
)
->
Double
{
...
...
@@ -52,7 +52,7 @@ extension UIViewController {
fileprivate
var
motionTransition
:
MotionTransitionItemController
{
get
{
return
AssociatedObject
(
base
:
self
,
key
:
&
MotionTransitionItemControllerKey
)
{
return
MotionTransitionItemController
(
delegate
:
MotionTransition
Delegate
())
return
MotionTransitionItemController
(
delegate
:
MotionTransition
Animator
())
}
}
set
(
value
)
{
...
...
@@ -60,7 +60,7 @@ extension UIViewController {
}
}
open
var
transitionDelegate
:
MotionTransition
Delegate
{
open
var
transitionDelegate
:
MotionTransition
Animator
{
return
motionTransition
.
delegate
}
}
...
...
@@ -133,15 +133,9 @@ extension UIView {
let
oldCornerRadius
=
view
.
cornerRadius
view
.
cornerRadius
=
0
let
oldRotation
=
view
.
layer
.
value
(
forKeyPath
:
MotionAnimationKeyPath
.
rotation
.
rawValue
)
??
0
view
.
layer
.
setValue
(
0
,
forKeyPath
:
MotionAnimationKeyPath
.
rotation
.
rawValue
)
let
v
=
view
.
snapshotView
(
afterScreenUpdates
:
afterUpdates
)
!
view
.
cornerRadius
=
oldCornerRadius
view
.
layer
.
setValue
(
oldRotation
,
forKeyPath
:
MotionAnimationKeyPath
.
rotation
.
rawValue
)
v
.
layer
.
setValue
(
oldRotation
,
forKeyPath
:
MotionAnimationKeyPath
.
rotation
.
rawValue
)
let
contentView
=
v
.
subviews
.
first
!
contentView
.
cornerRadius
=
view
.
cornerRadius
contentView
.
masksToBounds
=
true
...
...
@@ -163,7 +157,7 @@ extension UIView {
v
.
shadowColor
=
view
.
shadowColor
v
.
shadowOffset
=
view
.
shadowOffset
v
.
contentMode
=
view
.
contentMode
//
v.layer.transform = view.layer.transform
v
.
layer
.
transform
=
view
.
layer
.
transform
view
.
isHidden
=
true
(
view
as?
Pulseable
)?
.
pulse
.
pulseLayer
?
.
isHidden
=
false
...
...
@@ -212,15 +206,35 @@ open class MotionTransitionPresentationController: UIPresentationController {
}
}
open
class
MotionTransition
Delegate
:
NSObject
{
open
class
MotionTransition
Animator
:
NSObject
{
open
var
isPresenting
=
false
open
var
toViewController
:
UIViewController
!
open
var
fromViewController
:
UIViewController
!
open
var
transitionContext
:
UIViewControllerContextTransitioning
!
open
var
delay
:
TimeInterval
=
0
open
var
duration
:
TimeInterval
=
0
open
var
containerView
:
UIView
!
open
var
transitionView
=
UIView
()
public
var
toViews
:
[
UIView
]
{
var
views
:
[
UIView
]
=
[]
subviews
(
of
:
toViewController
.
view
,
views
:
&
views
)
return
views
}
public
var
fromViews
:
[
UIView
]
{
var
views
:
[
UIView
]
=
[]
subviews
(
of
:
fromViewController
.
view
,
views
:
&
views
)
return
views
}
}
extension
MotionTransition
Delegate
:
UIViewControllerTransitioningDelegate
{
extension
MotionTransition
Animator
:
UIViewControllerTransitioningDelegate
{
open
func
animationController
(
forPresented
presented
:
UIViewController
,
presenting
:
UIViewController
,
source
:
UIViewController
)
->
UIViewControllerAnimatedTransitioning
?
{
return
MotionTransitionPresentedAnimator
()
}
...
...
@@ -242,10 +256,10 @@ extension MotionTransitionDelegate: UIViewControllerTransitioningDelegate {
}
}
extension
MotionTransition
Delegate
:
UINavigationControllerDelegate
{
extension
MotionTransition
Animator
:
UINavigationControllerDelegate
{
open
func
navigationController
(
_
navigationController
:
UINavigationController
,
animationControllerFor
operation
:
UINavigationControllerOperation
,
from
fromVC
:
UIViewController
,
to
toVC
:
UIViewController
)
->
UIViewControllerAnimatedTransitioning
?
{
isPresenting
=
operation
==
.
push
return
MotionTransitionAnimator
()
return
self
}
open
func
navigationController
(
_
navigationController
:
UINavigationController
,
interactionControllerFor
animationController
:
UIViewControllerAnimatedTransitioning
)
->
UIViewControllerInteractiveTransitioning
?
{
...
...
@@ -253,13 +267,13 @@ extension MotionTransitionDelegate: UINavigationControllerDelegate {
}
}
extension
MotionTransition
Delegate
:
UITabBarControllerDelegate
{
extension
MotionTransition
Animator
:
UITabBarControllerDelegate
{
open
func
tabBarController
(
_
tabBarController
:
UITabBarController
,
animationControllerForTransitionFrom
fromVC
:
UIViewController
,
to
toVC
:
UIViewController
)
->
UIViewControllerAnimatedTransitioning
?
{
isPresenting
=
true
self
.
fromViewController
=
fromViewController
??
fromVC
self
.
toViewController
=
toViewController
??
toVC
// self.inContainerController = true
return
MotionTransitionAnimator
()
return
self
}
open
func
tabBarController
(
_
tabBarController
:
UITabBarController
,
interactionControllerFor
animationController
:
UIViewControllerAnimatedTransitioning
)
->
UIViewControllerInteractiveTransitioning
?
{
...
...
@@ -267,28 +281,6 @@ extension MotionTransitionDelegate: UITabBarControllerDelegate {
}
}
open
class
MotionTransitionAnimator
:
MotionTransitionDelegate
{
open
var
transitionContext
:
UIViewControllerContextTransitioning
!
open
var
delay
:
TimeInterval
=
0
open
var
duration
:
TimeInterval
=
0
open
var
containerView
:
UIView
!
open
var
transitionView
=
UIView
()
public
var
toViews
:
[
UIView
]
{
var
views
:
[
UIView
]
=
[]
subviews
(
of
:
toViewController
.
view
,
views
:
&
views
)
return
views
}
public
var
fromViews
:
[
UIView
]
{
var
views
:
[
UIView
]
=
[]
subviews
(
of
:
fromViewController
.
view
,
views
:
&
views
)
return
views
}
}
extension
MotionTransitionAnimator
:
UIViewControllerAnimatedTransitioning
{
@objc(animateTransition:)
open
func
animateTransition
(
using
transitionContext
:
UIViewControllerContextTransitioning
)
{
...
...
@@ -316,7 +308,7 @@ extension MotionTransitionAnimator: UIViewControllerAnimatedTransitioning {
}
}
extension
MotionTransition
Delegate
{
extension
MotionTransition
Animator
{
fileprivate
func
subviews
(
of
view
:
UIView
,
views
:
inout
[
UIView
])
{
for
v
in
view
.
subviews
{
if
0
<
v
.
motionTransitionIdentifier
.
utf16
.
count
{
...
...
@@ -381,9 +373,7 @@ open class MotionTransitionPresentedAnimator: MotionTransitionAnimator {
snapshotChildAnimations
.
append
(
Motion
.
position
(
x
:
w
/
2
,
y
:
h
/
2
))
snapshotChildAnimations
.
append
(
sizeAnimation
)
let
rotateAnimation
=
Motion
.
rotate
(
angle
:
getRotationInDegrees
(
view
:
toView
))
//rotateAnimation.fromValue = getRotationInDegrees(view: fromView)
snapshotAnimations
.
append
(
rotateAnimation
)
snapshotAnimations
.
append
(
Motion
.
rotate
(
angle
:
getRotationInDegrees
(
view
:
toView
)))
let
cornerRadiusAnimation
=
Motion
.
corner
(
radius
:
toView
.
cornerRadius
)
snapshotAnimations
.
append
(
cornerRadiusAnimation
)
...
...
@@ -497,9 +487,7 @@ open class MotionTransitionDismissedAnimator: MotionTransitionAnimator {
snapshotChildAnimations
.
append
(
Motion
.
position
(
x
:
w
/
2
,
y
:
h
/
2
))
snapshotChildAnimations
.
append
(
sizeAnimation
)
let
rotateAnimation
=
Motion
.
rotate
(
angle
:
getRotationInDegrees
(
view
:
toView
))
//rotateAnimation.fromValue = getRotationInDegrees(view: fromView)
snapshotAnimations
.
append
(
rotateAnimation
)
snapshotAnimations
.
append
(
Motion
.
rotate
(
angle
:
getRotationInDegrees
(
view
:
toView
)))
let
cornerRadiusAnimation
=
Motion
.
corner
(
radius
:
toView
.
cornerRadius
)
snapshotAnimations
.
append
(
cornerRadiusAnimation
)
...
...
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