Skip to content

Commit c86d8b8

Browse files
committed
Merge pull request #7 from gregttn/refactoring
Refactor constructor using default parameters
2 parents 2411e91 + 027724b commit c86d8b8

File tree

2 files changed

+111
-121
lines changed

2 files changed

+111
-121
lines changed

NVActivityIndicatorView/NVActivityIndicatorView.swift

Lines changed: 77 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -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

43106
public 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
}

README.md

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,28 +49,55 @@ Firstly, import NVActivityIndicatorView
4949
import NVActivityIndicatorView
5050
```
5151

52-
Then, there are 4 ways you can do:
52+
Then, there are multiple ways you can create NVActivityIndicatorView:
5353

5454
- Use it in storyboard by changing class of any `UIView` to `NVActivityIndicatorView`
5555
This will use default values 40, white, .Pacman for size, color and type respectively.
5656

57-
- Create with specified type and size 40, color white as default
57+
- Create with specified type, color and size
5858

5959
```swift
60-
NVActivityIndicatorView(frame: frame, type: type)
60+
NVActivityIndicatorView(frame: frame, type: type, color: color, size: size)
6161
```
6262

63-
- Create with specified type, color and size 40 as default
63+
Any of the last three arguments can be omitted. If an argument is omitted it will use the default values which are 40, white, .Pacman for size, color and type respectively.
64+
Therefore, you can also create NVActivityIndicatorView using any of the following:
6465

66+
- specify only frame, type and color
6567
```swift
6668
NVActivityIndicatorView(frame: frame, type: type, color: color)
6769
```
6870

69-
- Create with specified type, color, size
71+
- specify only frame, type and size
72+
```swift
73+
NVActivityIndicatorView(frame: frame, type: type, size: size)
74+
```
7075

76+
- specify only frame, size and color
7177
```swift
72-
NVActivityIndicatorView(frame: frame, type: type, color: color, size: size)
78+
NVActivityIndicatorView(frame: frame, size: size, color: color)
7379
```
80+
81+
- specify only frame and type
82+
```swift
83+
NVActivityIndicatorView(frame: frame, type: type)
84+
```
85+
86+
- specify only frame and color
87+
```swift
88+
NVActivityIndicatorView(frame: frame, color: color)
89+
```
90+
91+
- specify only frame and size
92+
```swift
93+
NVActivityIndicatorView(frame: frame, size: size)
94+
```
95+
96+
- specify only frame
97+
```swift
98+
NVActivityIndicatorView(frame: frame)
99+
```
100+
74101
# Acknowledgment
75102

76103
Thanks [Connor Atherton](https://github.com/ConnorAtherton) for great loaders and [Danil Gontovnik](https://github.com/gontovnik) for kick-start.
@@ -79,4 +106,4 @@ Thanks [Connor Atherton](https://github.com/ConnorAtherton) for great loaders an
79106

80107
The MIT License (MIT)
81108

82-
Copyright (c) 2015 Nguyen Vinh [@ninjaprox](http://twitter.com/ninjaprox)
109+
Copyright (c) 2015 Nguyen Vinh [@ninjaprox](http://twitter.com/ninjaprox)

0 commit comments

Comments
 (0)