@@ -38,12 +38,75 @@ public enum NVActivityIndicatorType {
3838 case Pacman
3939 case BallGridBeat
4040 case SemiCircleSpin
41+
42+ private func animation( ) -> NVActivityIndicatorAnimationDelegate {
43+ switch self {
44+ case . Blank:
45+ return NVActivityIndicatorAnimationBlank ( )
46+ case . BallPulse:
47+ return NVActivityIndicatorAnimationBallPulse ( )
48+ case . BallGridPulse:
49+ return NVActivityIndicatorAnimationBallGridPulse ( )
50+ case . BallClipRotate:
51+ return NVActivityIndicatorAnimationBallClipRotate ( )
52+ case . SquareSpin:
53+ return NVActivityIndicatorAnimationSquareSpin ( )
54+ case . BallClipRotatePulse:
55+ return NVActivityIndicatorAnimationBallClipRotatePulse ( )
56+ case . BallClipRotateMultiple:
57+ return NVActivityIndicatorAnimationBallClipRotateMultiple ( )
58+ case . BallPulseRise:
59+ return NVActivityIndicatorAnimationBallPulseRise ( )
60+ case . BallRotate:
61+ return NVActivityIndicatorAnimationBallRotate ( )
62+ case . CubeTransition:
63+ return NVActivityIndicatorAnimationCubeTransition ( )
64+ case . BallZigZag:
65+ return NVActivityIndicatorAnimationBallZigZag ( )
66+ case . BallZigZagDeflect:
67+ return NVActivityIndicatorAnimationBallZigZagDeflect ( )
68+ case . BallTrianglePath:
69+ return NVActivityIndicatorAnimationBallTrianglePath ( )
70+ case . BallScale:
71+ return NVActivityIndicatorAnimationBallScale ( )
72+ case . LineScale:
73+ return NVActivityIndicatorAnimationLineScale ( )
74+ case . LineScaleParty:
75+ return NVActivityIndicatorAnimationLineScaleParty ( )
76+ case . BallScaleMultiple:
77+ return NVActivityIndicatorAnimationBallScaleMultiple ( )
78+ case . BallPulseSync:
79+ return NVActivityIndicatorAnimationBallPulseSync ( )
80+ case . BallBeat:
81+ return NVActivityIndicatorAnimationBallBeat ( )
82+ case . LineScalePulseOut:
83+ return NVActivityIndicatorAnimationLineScalePulseOut ( )
84+ case . LineScalePulseOutRapid:
85+ return NVActivityIndicatorAnimationLineScalePulseOutRapid ( )
86+ case . BallScaleRipple:
87+ return NVActivityIndicatorAnimationBallScaleRipple ( )
88+ case . BallScaleRippleMultiple:
89+ return NVActivityIndicatorAnimationBallScaleRippleMultiple ( )
90+ case . BallSpinFadeLoader:
91+ return NVActivityIndicatorAnimationBallSpinFadeLoader ( )
92+ case . LineSpinFadeLoader:
93+ return NVActivityIndicatorAnimationLineSpinFadeLoader ( )
94+ case . TriangleSkewSpin:
95+ return NVActivityIndicatorAnimationTriangleSkewSpin ( )
96+ case . Pacman:
97+ return NVActivityIndicatorAnimationPacman ( )
98+ case . BallGridBeat:
99+ return NVActivityIndicatorAnimationBallGridBeat ( )
100+ case . SemiCircleSpin:
101+ return NVActivityIndicatorAnimationSemiCircleSpin ( )
102+ }
103+ }
41104}
42105
43106public class NVActivityIndicatorView : UIView {
44- private let DEFAULT_TYPE : NVActivityIndicatorType = . Pacman
45- private let DEFAULT_COLOR = UIColor . whiteColor ( )
46- private let DEFAULT_SIZE : CGSize = CGSize ( width: 40 , height: 40 )
107+ private static let DEFAULT_TYPE : NVActivityIndicatorType = . Pacman
108+ private static let DEFAULT_COLOR = UIColor . whiteColor ( )
109+ private static let DEFAULT_SIZE : CGSize = CGSize ( width: 40 , height: 40 )
47110
48111 private var type : NVActivityIndicatorType
49112 private var color : UIColor
@@ -65,64 +128,27 @@ public class NVActivityIndicatorView: UIView {
65128 :returns: The activity indicator view
66129 */
67130 required public init ( coder aDecoder: NSCoder ) {
68- self . type = DEFAULT_TYPE
69- self . color = DEFAULT_COLOR
70- self . size = DEFAULT_SIZE
131+ self . type = NVActivityIndicatorView . DEFAULT_TYPE
132+ self . color = NVActivityIndicatorView . DEFAULT_COLOR
133+ self . size = NVActivityIndicatorView . DEFAULT_SIZE
71134 super. init ( coder: aDecoder) ;
72135 }
73136
74137 /**
75138 Create a activity indicator view with specified type, color, size and size
76139
77140 :param: frame view's frame
78- :param: type animation type, value of NVActivityIndicatorType enum
79- :param: color color of activity indicator view
80- :param: size actual size of animation in view
141+ :param: type animation type, value of NVActivityIndicatorType enum. Default type is pacman.
142+ :param: color color of activity indicator view. Default color is white.
143+ :param: size actual size of animation in view. Default size is 40
81144
82145 :returns: The activity indicator view
83146 */
84- public init ( frame: CGRect , type: NVActivityIndicatorType , color: UIColor ? , size: CGSize ? ) {
147+ public init ( frame: CGRect , type: NVActivityIndicatorType = DEFAULT_TYPE , color: UIColor = DEFAULT_COLOR , size: CGSize = DEFAULT_SIZE ) {
85148 self . type = type
86- self . color = DEFAULT_COLOR
87- self . size = DEFAULT_SIZE
149+ self . color = color
150+ self . size = size
88151 super. init ( frame: frame)
89-
90- if let _color = color {
91- self . color = _color
92- }
93- if let _size = size {
94- self . size = _size
95- }
96- }
97-
98- /**
99- Create a activity indicator view with specified type, color and default size
100-
101- - Default size is 40
102-
103- :param: frame view's frame
104- :param: value animation type, value of NVActivityIndicatorType enum
105- :param: color color of activity indicator view
106-
107- :returns: The activity indicator view
108- */
109- convenience public init ( frame: CGRect , type: NVActivityIndicatorType , color: UIColor ? ) {
110- self . init ( frame: frame, type: type, color: color, size: nil )
111- }
112-
113- /**
114- Create a activity indicator view with specified type and default color, size
115-
116- - Default color is white
117- - Default size is 40
118-
119- :param: view view's frame
120- :param: value animation type, value of NVActivityIndicatorType enum
121-
122- :returns: The activity indicator view
123- */
124- convenience public init ( frame: CGRect , type: NVActivityIndicatorType ) {
125- self . init ( frame: frame, type: type, color: nil )
126152 }
127153
128154 /**
@@ -151,74 +177,11 @@ public class NVActivityIndicatorView: UIView {
151177 }
152178
153179 // MARK: Privates
154-
180+
155181 private func setUpAnimation( ) {
156- let animation : protocol < NVActivityIndicatorAnimationDelegate > = animationOfType ( self . type)
182+ let animation : protocol < NVActivityIndicatorAnimationDelegate > = self . type. animation ( )
157183
158184 self . layer. sublayers = nil
159185 animation. setUpAnimationInLayer ( self . layer, size: self . size, color: self . color)
160186 }
161-
162- private func animationOfType( type: NVActivityIndicatorType ) -> protocol < NVActivityIndicatorAnimationDelegate > {
163- switch type {
164- case . Blank:
165- return NVActivityIndicatorAnimationBlank ( )
166- case . BallPulse:
167- return NVActivityIndicatorAnimationBallPulse ( )
168- case . BallGridPulse:
169- return NVActivityIndicatorAnimationBallGridPulse ( )
170- case . BallClipRotate:
171- return NVActivityIndicatorAnimationBallClipRotate ( )
172- case . SquareSpin:
173- return NVActivityIndicatorAnimationSquareSpin ( )
174- case . BallClipRotatePulse:
175- return NVActivityIndicatorAnimationBallClipRotatePulse ( )
176- case . BallClipRotateMultiple:
177- return NVActivityIndicatorAnimationBallClipRotateMultiple ( )
178- case . BallPulseRise:
179- return NVActivityIndicatorAnimationBallPulseRise ( )
180- case . BallRotate:
181- return NVActivityIndicatorAnimationBallRotate ( )
182- case . CubeTransition:
183- return NVActivityIndicatorAnimationCubeTransition ( )
184- case . BallZigZag:
185- return NVActivityIndicatorAnimationBallZigZag ( )
186- case . BallZigZagDeflect:
187- return NVActivityIndicatorAnimationBallZigZagDeflect ( )
188- case . BallTrianglePath:
189- return NVActivityIndicatorAnimationBallTrianglePath ( )
190- case . BallScale:
191- return NVActivityIndicatorAnimationBallScale ( )
192- case . LineScale:
193- return NVActivityIndicatorAnimationLineScale ( )
194- case . LineScaleParty:
195- return NVActivityIndicatorAnimationLineScaleParty ( )
196- case . BallScaleMultiple:
197- return NVActivityIndicatorAnimationBallScaleMultiple ( )
198- case . BallPulseSync:
199- return NVActivityIndicatorAnimationBallPulseSync ( )
200- case . BallBeat:
201- return NVActivityIndicatorAnimationBallBeat ( )
202- case . LineScalePulseOut:
203- return NVActivityIndicatorAnimationLineScalePulseOut ( )
204- case . LineScalePulseOutRapid:
205- return NVActivityIndicatorAnimationLineScalePulseOutRapid ( )
206- case . BallScaleRipple:
207- return NVActivityIndicatorAnimationBallScaleRipple ( )
208- case . BallScaleRippleMultiple:
209- return NVActivityIndicatorAnimationBallScaleRippleMultiple ( )
210- case . BallSpinFadeLoader:
211- return NVActivityIndicatorAnimationBallSpinFadeLoader ( )
212- case . LineSpinFadeLoader:
213- return NVActivityIndicatorAnimationLineSpinFadeLoader ( )
214- case . TriangleSkewSpin:
215- return NVActivityIndicatorAnimationTriangleSkewSpin ( )
216- case . Pacman:
217- return NVActivityIndicatorAnimationPacman ( )
218- case . BallGridBeat:
219- return NVActivityIndicatorAnimationBallGridBeat ( )
220- case . SemiCircleSpin:
221- return NVActivityIndicatorAnimationSemiCircleSpin ( )
222- }
223- }
224187}
0 commit comments