Latest 1.1.1
License MIT
Platforms ios 10.3
Frameworks UIKit

Swift Version
CI Status

Swift Package Manager

GitHub release


NumericPicker is a drop-in iOS picker control written in Swift. It simplifies the creation of pickers that allow
your users to specify numbers by digit. It automatically uses the proper grouping and decimal separator for the
current (or specified) locale. You can easily dictate the number of integer and decimal places in the controller.

Sample Video

Note that the "Picker Value" field is there for demonstration purposes only. It is not included in the
NumericPicker control.

Table of Contents

Minimum Requirements

Version 1.1.x

  • Xcode 10
  • iOS 10.3
  • Swift 4.2

Version 1.0.x

  • Xcode 9
  • iOS 10.3


This repo contains an example project demonstrating how to use the NumericPicker control from Interface Builder and
from code.

To run the example project, clone the repo, open NumericPicker.xcodeproj and run the NumericPicker-Example scheme



NumericPicker is available through CocoaPods.

CocoaPods is a dependency manager for Swift and Objective-C that simplifies the use of 3rd-party
libraries like NumericPicker in your projects.

First, add the following line to your Podfile:

pod "NumericPicker"

or, for Xcode 9 and Swift 4.0

pod "NumericPicker", '~> 1.0.0'

Second, install NumericPicker into your project:

pod install


Carthage is a decentralized dependency manager that builds your dependencies and
provides you with binary frameworks.

To integrate NumericPicker into your Xcode project using Carthage, specify it in your Cartfile:

github "MattLewin/NumericPicker"

or, for Xcode 9 and Swift 4.0

github "MattLewin/NumericPicker" ~> 1.0.0

Run carthage update to build the framework and drag the built NumericPicker.framework (in Carthage/Build/iOS folder)
into your Xcode project (Linked Frameworks and Libraries in Targets).

Swift Package Manager (SPM)

The Swift Package Manager does not yet support importing UIKit or compilation for
iOS. Thus, NumericPicker can not yet be used with the SPM.


  1. Copy NumericPicker.swift into your project
  2. Have a nice day


NumericPicker is a subclass of UIControl. In this way it
is more like UIDatePicker than it is like
UIPickerView. What this means for you is that you don’t
need to implement UIPickerViewDataSource or

Note that the provided Example demonstrates everything detailed below.

Configurable Properties

  • value: Double – The value displayed in the picker. Set this value to update the picker programatically.
    (Default: 0)
  • minIntegerDigits: Int – The minimum number of integer digits (digits to the left of the decimal separator) to
    include in the picker. Think of this as zero-padding the picker. If value requires more than this minimum, the picker
    will automatically meet this requirement. (This is probably not what you want, though.) (Default: 1)
  • fractionDigits: Int – The number of digits to the right of the decimal separator. NumericPicker guarantees
    exactly this many fractional digits will be displayed. You can use this to achieve rounding or zero-padding of values
    to the right of the decimal separator. (Default: 0)
  • locale: Locale – The locale used to format the numeric values. Use this if you want numbers formatted with
    separators other than those used by the device locale. (Default: current device locale)
  • font: UIFont – The font used to format the picker components. (Default: Body text style)
  • displayString: StringREAD ONLY – The text representation of value. This string will contain locale-specific
    grouping and decimal separators. It will have exactly fractionDigits digits to the right of the decimal separator and
    the minimum number of integer places necessary to represent value.

Interface Builder

To use NumericPicker with Interface Builder, add a UIControl
to your storyboard or XIB, and then set the "Custom Class" to NumericPicker. Connect the "Value Changed" event to
a function in your view controller. (Be certain to set the "Type" to NumericPicker as shown below.)


Within that function, you can access sender.displayString or sender.value as needed.

Cocoapods or Manually

If you are using Cocoapods or have dropped NumericPicker.swift into your code, you can configure value,
minIntegerDigits, and fractionDigits from the "Attributes" inspector.

IB NumericPicker


Xcode does not currently (as of 9.0) support @IBInspectable properties from external frameworks. The means
you cannot configure the above properties in IB. You can, however, trick IB into rendering NumericPicker with its
default values by adding the following code to one of your view controllers:

@IBDesignable extension NumericPicker { }


Add a NumericPicker control from code as you would any other subview. Here is the code from
NumericPicker-Example/ViewController.swift to produce the bottom sample NumericPicker. Note that it is typically unnecessary
to set locale, as NumericPicker will use the current device locale by default.

var codeNumericPicker = NumericPicker()
codeNumericPicker.minIntegerDigits = 6
codeNumericPicker.fractionDigits = 3
codeNumericPicker.value = 76543.21
codeNumericPicker.locale = Locale(identifier: "de-DE")
codeNumericPicker.addTarget(self, action: #selector(codeValueChanged), for: .valueChanged)


Matt Lewin, [email protected]


NumericPicker is available under the MIT license. See
for more info.

Latest podspec

    "name": "NumericPicker",
    "version": "1.1.1",
    "summary": "iOS picker for easily selecting numbers by digit.",
    "swift_version": "4.2",
    "description": "NumericPicker is a drop-in iOS picker control written in Swift. It makes simplifies the creation of pickers that allownyour users to specify numbers by digit. It automatically uses the proper grouping and decimal separator for thencurrent (or specified) locale. You can easily dictate the number of integer and decimal places in the controller.",
    "homepage": "",
    "license": {
        "type": "MIT",
        "file": ""
    "authors": {
        "Matt Lewin": "[email protected]"
    "source": {
        "git": "",
        "tag": "1.1.1"
    "social_media_url": "",
    "platforms": {
        "ios": "10.3"
    "source_files": "Sources",
    "frameworks": "UIKit"

Pin It on Pinterest

Share This