 			shapeLayer.strokeStart = newValue
 		}
 	}
+
+
+	public override func tintColorDidChange() {
+		super.tintColorDidChange()
+
+		if let originalFillColor = originalFillColor where originalFillColor.tintAlpha != nil {
+			shapeLayer.fillColor = originalFillColor.tintedWithColor(tintColor).CGColor
+		}
+
+		if let originalStrokeColor = originalStrokeColor where originalStrokeColor.tintAlpha != nil {
+			shapeLayer.strokeColor = originalStrokeColor.tintedWithColor(tintColor).CGColor
+		}
+	}
 }


	@IBInspectable
	public var strokeColor: UIColor? {
		get {
			guard let layerStrokeColor = shapeLayer.strokeColor else {
				return nil
			}

			return UIColor(CGColor: layerStrokeColor)
		}
		set {
			shapeLayer.strokeColor = newValue?.CGColor
		}
	}


@IBDesignable
public /* non-final */ class ShapeView: View {

	private var originalFillColor: UIColor?
	private var originalStrokeColor: UIColor?


	public override init() {
		super.init()

		if let layerFillColor = shapeLayer.fillColor {
			fillColor = UIColor(CGColor: layerFillColor)
		}
		if let layerStrokeColor = shapeLayer.strokeColor {
			strokeColor = UIColor(CGColor: layerStrokeColor)
		}
	}


	public required init?(coder: NSCoder) {
		super.init(coder: coder)

		if let layerFillColor = shapeLayer.fillColor {
			fillColor = UIColor(CGColor: layerFillColor)
		}
		if let layerStrokeColor = shapeLayer.strokeColor {
			strokeColor = UIColor(CGColor: layerStrokeColor)
		}
	}


