@@ -18,9 +18,8 @@ private func TransformForRotatingLayer(_ layer: CALayer, angle: CGFloat) -> CATr
18
18
}
19
19
20
20
class MenuItemsAnimator {
21
-
22
- var completion : ( ( ) -> Void ) ?
23
- var duration : TimeInterval = 0
21
+ var completion : ( ) -> Void = { }
22
+ var duration : CFTimeInterval = 0
24
23
25
24
fileprivate let layers : [ CALayer ]
26
25
fileprivate let startAngle : CGFloat
@@ -34,19 +33,18 @@ class MenuItemsAnimator {
34
33
35
34
func start( ) {
36
35
let count = Double ( layers. count)
37
- let duration = self . duration * count / ( 4 * count - 3 )
36
+ let animationDuration = self . duration * count / ( 4 * count - 3 )
38
37
for (index, layer) in layers. enumerated ( ) {
39
38
layer. transform = TransformForRotatingLayer ( layer, angle: startAngle)
40
39
41
- let delay = 3 * duration * Double( index) / count
42
- UIView . animate ( withDuration: duration , delay: delay, options: . curveEaseIn, animations: {
40
+ let delay = 3 * animationDuration * Double( index) / count
41
+ UIView . animate ( withDuration: animationDuration , delay: delay, options: . curveEaseIn, animations: {
43
42
layer. transform = TransformForRotatingLayer ( layer, angle: self . endAngle)
44
43
} , completion: nil )
45
44
}
46
45
47
- let delay = DispatchTime . now ( ) + Double( Int64 ( duration * Double( NSEC_PER_SEC) ) ) / Double( NSEC_PER_SEC)
48
- DispatchQueue . main. asyncAfter ( deadline: delay) {
49
- self . completion ? ( )
46
+ DispatchQueue . main. asyncAfter ( deadline: . now( ) + duration) {
47
+ self . completion ( )
50
48
}
51
49
}
52
50
}
0 commit comments