         addSubview(picker)
     }
 
+    /// Initializes and returns a newly allocated `NumericPicker` object with a zero-sized frame rectangle.
     convenience public init() {
         self.init(frame: CGRect.zero)
     }

    /// updated by changes to `value`, `minIntegerDigits`, and `fractionDigits`.
    fileprivate(set) public var displayString: String = "0"

    override public var intrinsicContentSize: CGSize {
        return picker.bounds.size
    }

        return pickerLabel
    }

    /**
     Called by the picker view when it needs the row width to use for drawing row content.

     - parameter pickerView: The picker view requesting the data.
     - parameter component: A zero-indexed number identifying a component of `pickerView`. Components are numbered left-to-right.

     - returns: A `CGFloat` indicating the width of the row in points.
     */
    public func pickerView(_ pickerView: UIPickerView, widthForComponent component: Int) -> CGFloat {
        let pickerLabel = self.pickerView(pickerView, viewForRow: 0, forComponent: component, reusing: nil)
        let width = pickerLabel.bounds.width + 8
        return width
    }

    /**
     Called by the picker view when the user selects a row in a component.

     - parameter pickerView: The picker view requesting the data.
     - parameter row: A zero-indexed number identifying a row of `component`. Rows are numbered top-to-bottom.
     - parameter component: A zero-indexed number identifying a component of `pickerView`. Components are numbered left-to-right.
     */
    public func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        var stringValue = ""
        for index in 0..<pickerView.numberOfComponents {
