@@ -11,7 +11,9 @@ import UIKit
11
11
class ViewController : UITableViewController {
12
12
13
13
var refreshContainerView : UIView !
14
+ var overlayView : UIView !
14
15
var isRefreshControlAnimating = false
16
+ var shadowView : ShadowView !
15
17
var centerGear : MainGear !
16
18
var topGear : BigGear ! // cue Jessica from the Allman brothers
17
19
var rightGear : BigGear !
@@ -39,6 +41,12 @@ class ViewController: UITableViewController {
39
41
self . refreshContainerView = UIView ( frame: self . refreshControl!. bounds)
40
42
self . refreshContainerView. backgroundColor = UIColor ( red: 0.13 , green: 0.29 , blue: 0.55 , alpha: 1 )
41
43
44
+ self . overlayView = UIView ( frame: self . refreshControl!. bounds)
45
+ self . overlayView. backgroundColor = UIColor . blackColor ( ) . colorWithAlphaComponent ( 0.3 )
46
+
47
+ self . shadowView = ShadowView ( frame: self . refreshControl!. bounds)
48
+ self . shadowView. shadowPercentage = 0.2
49
+
42
50
self . centerGear = MainGear ( frame: CGRectMake ( 0 , 0 , 48 , 48 ) )
43
51
self . centerGear. backgroundColor = UIColor . clearColor ( )
44
52
self . centerGear. tintColor = UIColor ( red: 0.36 , green: 0.52 , blue: 0.92 , alpha: 1 )
@@ -69,6 +77,8 @@ class ViewController: UITableViewController {
69
77
self . refreshContainerView. addSubview ( self . bottomGear)
70
78
self . refreshContainerView. addSubview ( self . leftGear)
71
79
self . refreshContainerView. addSubview ( self . centerGear)
80
+ self . refreshContainerView. addSubview ( self . shadowView)
81
+ self . refreshContainerView. addSubview ( self . overlayView)
72
82
73
83
self . refreshContainerView. clipsToBounds = true
74
84
self . refreshControl!. tintColor = UIColor . clearColor ( )
@@ -92,6 +102,8 @@ class ViewController: UITableViewController {
92
102
var pullDistance = max ( 0.0 , - self . refreshControl!. frame. origin. y) ;
93
103
var pullRatio = min ( max ( pullDistance, 0.0 ) , 140.0 ) / 140.0 ;
94
104
105
+ self . overlayView. alpha = 1 - pullRatio
106
+
95
107
self . centerGear. center = CGPoint ( x: CGRectGetMidX ( self . refreshContainerView. frame) , y: pullDistance / 2 )
96
108
self . topGear. center = CGPoint ( x: CGRectGetMidX ( self . refreshContainerView. frame) + 48 , y: pullDistance / 2 - 49 )
97
109
self . rightGear. center = CGPoint ( x: CGRectGetMidX ( self . refreshContainerView. frame) + 120 , y: pullDistance / 2 )
@@ -100,7 +112,7 @@ class ViewController: UITableViewController {
100
112
101
113
refreshBounds. size. height = pullDistance;
102
114
103
- self . refreshContainerView. frame = refreshBounds;
115
+ [ self . refreshContainerView, self . overlayView ] . map ( { $0 . frame = refreshBounds} ) ;
104
116
105
117
// Don't rotate the gears if the refresh animation is playing
106
118
if ( !self . refreshControl!. refreshing && !self . isRefreshControlAnimating) {
0 commit comments