Skip to content

Commit 39d8614

Browse files
committed
Uses C4ViewAnimation.stack, instead of static variable
1 parent e5e42a7 commit 39d8614

File tree

4 files changed

+26
-14
lines changed

4 files changed

+26
-14
lines changed

Diff for: C4/UI/C4GradientLayer.swift

+6-2
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,13 @@ public class C4GradientLayer: CAGradientLayer {
3535
if C4ShapeLayer.disableActions == true {
3636
return nil
3737
}
38-
38+
39+
let animation = C4ViewAnimation.stack.first as? C4ViewAnimation
40+
41+
let shouldSpring = animation?.spring == nil ? false : true
42+
3943
if key == "colors" {
40-
let animation = C4ViewAnimation.spring == nil ? CABasicAnimation(keyPath: key) : CASpringAnimation(keyPath: key)
44+
let animation = shouldSpring ? CASpringAnimation(keyPath: key) : CABasicAnimation(keyPath: key)
4145
animation.configureOptions()
4246
animation.fromValue = self.colors
4347
return animation;

Diff for: C4/UI/C4ImageLayer.swift

+5-1
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,12 @@ public class C4ImageLayer: CALayer {
2828
return nil
2929
}
3030

31+
let animation = C4ViewAnimation.stack.first as? C4ViewAnimation
32+
33+
let shouldSpring = animation?.spring == nil ? false : true
34+
3135
if key == "contents" {
32-
let animation = C4ViewAnimation.spring == nil ? CABasicAnimation(keyPath: key) : CASpringAnimation(keyPath: key)
36+
let animation = shouldSpring ? CASpringAnimation(keyPath: key) : CABasicAnimation(keyPath: key)
3337
animation.configureOptions()
3438
animation.fromValue = self.contents
3539
return animation;

Diff for: C4/UI/C4ShapeLayer.swift

+15-9
Original file line numberDiff line numberDiff line change
@@ -40,44 +40,48 @@ public class C4ShapeLayer: CAShapeLayer {
4040
if C4ShapeLayer.disableActions == true {
4141
return nil
4242
}
43-
43+
44+
let animation = C4ViewAnimation.stack.first as? C4ViewAnimation
45+
46+
let shouldSpring = animation?.spring == nil ? false : true
47+
4448
if key == "lineWidth" {
45-
let animation = C4ViewAnimation.spring == nil ? CABasicAnimation(keyPath: key) : CASpringAnimation(keyPath: key)
49+
let animation = shouldSpring ? CASpringAnimation(keyPath: key) : CABasicAnimation(keyPath: key)
4650
animation.configureOptions()
4751
animation.fromValue = self.lineWidth
4852
return animation;
4953
}
5054
else if key == "strokeEnd" {
51-
let animation = C4ViewAnimation.spring == nil ? CABasicAnimation(keyPath: key) : CASpringAnimation(keyPath: key)
55+
let animation = shouldSpring ? CASpringAnimation(keyPath: key) : CABasicAnimation(keyPath: key)
5256
animation.configureOptions()
5357
animation.fromValue = self.strokeEnd
5458
return animation;
5559
}
5660
else if key == "strokeStart" {
57-
let animation = C4ViewAnimation.spring == nil ? CABasicAnimation(keyPath: key) : CASpringAnimation(keyPath: key)
61+
let animation = shouldSpring ? CASpringAnimation(keyPath: key) : CABasicAnimation(keyPath: key)
5862
animation.configureOptions()
5963
animation.fromValue = self.strokeStart
6064
return animation;
6165
}
6266
else if key == "strokeColor" {
63-
let animation = C4ViewAnimation.spring == nil ? CABasicAnimation(keyPath: key) : CASpringAnimation(keyPath: key)
67+
let animation = shouldSpring ? CASpringAnimation(keyPath: key) : CABasicAnimation(keyPath: key)
6468
animation.configureOptions()
6569
animation.fromValue = self.strokeColor
6670
return animation;
6771
}
6872
else if key == "path" {
69-
let animation = C4ViewAnimation.spring == nil ? CABasicAnimation(keyPath: key) : CASpringAnimation(keyPath: key)
73+
let animation = shouldSpring ? CASpringAnimation(keyPath: key) : CABasicAnimation(keyPath: key)
7074
animation.configureOptions()
7175
animation.fromValue = self.path
7276
return animation;
7377
}
7478
else if key == "fillColor" {
75-
let animation = C4ViewAnimation.spring == nil ? CABasicAnimation(keyPath: key) : CASpringAnimation(keyPath: key)
79+
let animation = shouldSpring ? CASpringAnimation(keyPath: key) : CABasicAnimation(keyPath: key)
7680
animation.configureOptions()
7781
animation.fromValue = self.fillColor
7882
return animation;
7983
} else if key == "lineDashPhase" {
80-
let animation = C4ViewAnimation.spring == nil ? CABasicAnimation(keyPath: key) : CASpringAnimation(keyPath: key)
84+
let animation = shouldSpring ? CASpringAnimation(keyPath: key) : CABasicAnimation(keyPath: key)
8185
animation.configureOptions()
8286
animation.fromValue = self.lineDashPhase
8387
return animation;
@@ -107,7 +111,9 @@ extension CASpringAnimation {
107111
/// The options set in this method are favorable for the inner workings of C4's animation behaviours.
108112
public override func configureOptions() {
109113
super.configureOptions()
110-
if let spring = C4ViewAnimation.spring {
114+
if let animation = C4ViewAnimation.stack.last as? C4ViewAnimation,
115+
let spring = animation.spring {
116+
111117
self.mass = CGFloat(spring.mass)
112118
self.damping = CGFloat(spring.damping)
113119
self.stiffness = CGFloat(spring.stiffness)

Diff for: C4/UI/C4ViewAnimation.swift

-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ public struct Spring {
3636

3737
/// C4ViewAnimation is a concrete subclass of C4Animation whose execution blocks affect properties of view-based objects.
3838
public class C4ViewAnimation : C4Animation {
39-
public static var spring: Spring?
4039

4140
public var spring: Spring?
4241

@@ -152,7 +151,6 @@ public class C4ViewAnimation : C4Animation {
152151
}
153152

154153
private func doInTransaction(action: () -> Void) {
155-
C4ViewAnimation.spring = spring
156154
CATransaction.begin()
157155
CATransaction.setAnimationDuration(duration)
158156
CATransaction.setAnimationTimingFunction(timingFunction)

0 commit comments

Comments
 (0)