         touchMoved = false
     }
 
+    /// Returns the minimum size that fits a given size.
     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))
     }
 
+    /// The minimum size used for Auto Layout.
     override public func intrinsicContentSize() -> CGSize {
         return desiredSizeForLeftSize(leftLabel.intrinsicContentSize(), rightSize: rightLabel.intrinsicContentSize())
     }

        previousPoint = point
    }

    override public func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
        super.touchesEnded(touches, withEvent: event)
        guard touchBegan else {

        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
