         return label
     }
 
+    /// The label on the left. Don't set the `textColor` and `text` properties on this label. Set them on the `leftText`, `tintColor` and `disabledColor` properties of the switch instead.
     public let leftLabel = labelFactory()
+
+    /// The label on the right. Don't set the `textColor` and `text` properties on this label. Set them on the `rightText`, `tintColor` and `disabledColor` properties of the switch instead.
     public let rightLabel = labelFactory()
 
+    /// Text for the label on the left. Setting this property instead of the `text` property of the `leftLabel` to trigger Auto Layout automatically.
     @IBInspectable public var leftText: String? {
         get {
             return leftLabel.text

        touchMoved = false
    }

    override public func sizeThatFits(size: CGSize) -> CGSize {
        let labelSize = CGSizeMake((size.width - 3 * size.height / 2) / 2, size.height)
        return desiredSizeForLeftSize(leftLabel.sizeThatFits(labelSize), rightSize: rightLabel.sizeThatFits(labelSize))
    }

    override public func intrinsicContentSize() -> CGSize {
        return desiredSizeForLeftSize(leftLabel.intrinsicContentSize(), rightSize: rightLabel.intrinsicContentSize())
    }

        reloadSwitchLayerPosition()
    }

    /// Touches began event handler. Should not be called directly.
    override public func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        super.touchesBegan(touches, withEvent: event)
        touchBegan = true
