         }
     }
 
-    // MARK: - Functions to facilitate testing
-    
+    /**
+     Resizes the `NumericPicker` to contain the all components. Called when a property affecting the picker's
+     appearance changes.
+     */
+    func resize() {
+        var pickerSize = picker.bounds.size
+        pickerSize.width = widthOfPickerView()
+        picker.bounds.size = pickerSize
+        frame.size = pickerSize
+        picker.frame = bounds
+    }
+
+    /**
+     Calculates the width of the picker based on the number of components.
+
+     - returns: the new width of the picker
+     */
     func widthOfPickerView() -> CGFloat {
         let componentWidth: CGFloat! = picker.delegate?.pickerView!(picker, widthForComponent: 0)
         let componentCount = CGFloat((picker.dataSource?.numberOfComponents(in: picker))!)

    /// The numeric value shown in the picker (defaults to `0.0`)
    @IBInspectable public var value: Double = 0.0 {
        didSet {
            updatePicker()
        }
    }



    /// The `UIPickerView` embedded within this control
    fileprivate(set) var picker: UIPickerView = UIPickerView()

    /// When the `NumericPicker` is first instantiated, we want to size it properly according to `value`. After that,
    /// changing `value` shouldn't resize the view.
    private var justInstantiated = true

    // MARK: - Object life cycle

