Skip to content

Commit

Permalink
Fix Star mask with parameters. e.g. Star(7) or Star (10)
Browse files Browse the repository at this point in the history
  • Loading branch information
JakeLin committed Feb 14, 2016
1 parent 16cbfec commit 5f0bcd8
Showing 1 changed file with 17 additions and 9 deletions.
26 changes: 17 additions & 9 deletions IBAnimatable/MaskDesignable.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,21 @@ public extension MaskDesignable where Self: UIView {
case .Circle:
maskCircle()
case .Star:
maskStarFromString(unwrappedMaskType)
maskStar()
case .Polygon:
maskPolygon()
case .Triangle:
maskTriangle()
case .Wave:
maskWaveFromString(unwrappedMaskType);
maskWave()
}
return
}

// Star with parameter
if unwrappedMaskType.hasPrefix(MaskType.Star.rawValue) {
maskStarFromString(unwrappedMaskType)
return
}
}

Expand Down Expand Up @@ -107,11 +114,12 @@ public extension MaskDesignable where Self: UIView {
return CGPoint(x: radius * cos(angle) + offset.x, y: radius * sin(angle) + offset.y)
}

private func cleanMaskString(mask: String, maskName: String) -> String {
var cleanMask = mask.stringByReplacingOccurrencesOfString(maskName, withString: "")
cleanMask = cleanMask.stringByReplacingOccurrencesOfString("(", withString: "")
cleanMask = cleanMask.stringByReplacingOccurrencesOfString(")", withString: "")
return cleanMask
private func retrieveMaskParameters(mask: String, maskName: String) -> String {
var params = mask.stringByReplacingOccurrencesOfString(" ", withString: "")
params = params.stringByReplacingOccurrencesOfString(maskName, withString: "")
params = params.stringByReplacingOccurrencesOfString("(", withString: "")
params = params.stringByReplacingOccurrencesOfString(")", withString: "")
return params
}

// MARK: - Polygon
Expand All @@ -135,7 +143,7 @@ public extension MaskDesignable where Self: UIView {
// MARK: - Star

private func maskStarFromString(mask: String) {
let points = Int(cleanMaskString(mask, maskName: "Star"))
let points = Int(retrieveMaskParameters(mask, maskName: MaskType.Star.rawValue))
if let unwrappedPoints = points {
maskStar(unwrappedPoints)
} else {
Expand Down Expand Up @@ -187,7 +195,7 @@ public extension MaskDesignable where Self: UIView {
// MARK: - Wave

private func maskWaveFromString(mask: String) {
let params = cleanMaskString(mask, maskName: "Wave").componentsSeparatedByString(",")
let params = retrieveMaskParameters(mask, maskName: MaskType.Wave.rawValue).componentsSeparatedByString(",")
if params.count == 3, let unwrappedWidth = Float(params[1]), unwrappedOffset = Float(params[2]) {
let up = params[0] == "up"
maskWave(up, waveWidth: CGFloat(unwrappedWidth), waveOffset: CGFloat(unwrappedOffset))
Expand Down

0 comments on commit 5f0bcd8

Please sign in to comment.