NumericPicker
描述
NumericPicker 是一个纯 Swift 编写的 iOS 选择器控件。它简化了创建能够让用户通过数字指定数字的选择器的过程。它将根据当前(或指定)区域设置自动使用适当的分组和十进制分隔符。您可以在控制器中轻松指定整数和十进制位数。
请注意,“选择器值”字段仅用于演示目的。它不包括在 NumericPicker
控件中。
目录
最低要求
版本 1.1.x
- Xcode 10
- iOS 10.3
- Swift 4.2
版本 1.0.x
- Xcode 9
- iOS 10.3
示例
该仓库包含一个示例项目,展示如何从 Interface Builder 和代码中使用 NumericPicker
控件。
要运行示例项目,请克隆仓库,打开 NumericPicker.xcodeproj
,然后运行 NumericPicker-Example
方案
安装
CocoaPods
NumericPicker可通过CocoaPods获取。
CocoaPods是一个Swift和Objective-C的依赖管理器,可以简化第三方库如NumericPicker
在各种项目中的使用。
首先,在您的Podfile中添加以下行
pod "NumericPicker"
或者,对于Xcode 9和Swift 4.0
pod "NumericPicker", '~> 1.0.0'
其次,将NumericPicker
安装到项目中
pod install
Carthage
Carthage 是一个去中心化的依赖管理器,它构建您的依赖项并向您提供二进制框架。
要使用 Carthage 将 NumericPicker
集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它
github "MattLewin/NumericPicker"
或者,对于Xcode 9和Swift 4.0
github "MattLewin/NumericPicker" ~> 1.0.0
运行 carthage update
构建框架,并将构建好的 NumericPicker.framework
(位于 Carthage/Build/iOS 文件夹中)拖到您的 Xcode 项目中(在 Targets
中的“链接框架和库”)。
Swift Package Manager (SPM)
Swift Package Manager (SPM) 还不支持导入 UIKit
或为 iOS
编译。因此,目前不能使用 SPM 与 NumericPicker
一起使用。
手动操作
- 将
NumericPicker.swift
复制到您的项目 - 祝您愉快
用法
NumericPicker
是 UIControl
的子类。因此,它与 UIDatePicker
更相似,而不是与 UIPickerView
更相似。这意味着您不需要实现 UIPickerViewDataSource
或 UIPickerViewDelegate
。
注意,提供的 示例 展示了下面详细讲述的所有内容。
可配置属性
value: Double
- 在选择器中显示的值。设置此值可以按程序方式更新选择器。 (默认:0)minIntegerDigits: Int
- 选择器中包含的最小整数位数(小数点左侧的数字)。这可以理解为对选择器进行零填充。如果value
需要的位数超过这个最小值,选择器将自动满足这个要求。(但这可能不是你想要的结果。)(默认:1)fractionDigits: Int
- 小数点右侧的数字位数。NumericPicker
保证显示的 fractional digits 数量正好是这个值。你可以使用这个属性来实现对小数点右侧值的舍入或零填充。(默认:0)locale: Locale
- 用于格式化数值的本地化设置。如果你需要使用除设备本地设置之外的数字分隔符格式化数字,请使用此功能。(默认:当前设备本地化设置)font: UIFont
- 用于格式化选择器组件的字体。 (默认:Body
文本样式)displayString: String
- 只读 -value
的文本表示形式。该字符串将包含本地化特定的分组和小数分隔符。它将在小数点右侧有 exactlyfractionDigits
位数,以及代表value
必须的最小整数位数。(默认:0)
界面构建器
要使用 NumericPicker
与界面构建器一起使用,请将 UIControl
添加到你的故事板或 XIB,并将“自定义类”设置为 NumericPicker
。将“值更改”事件连接到你的视图控制器中的一个函数。(确保将其“类型”设置为如下所示的 NumericPicker
。)
在这个函数中,根据需要,您可以访问 sender.displayString
或 sender.value
。
Cocoapods 或手动
如果你使用 Cocoapods 或已将 NumericPicker.swift
添加到你的代码中,你可以在“属性”检查器中配置 value
、minIntegerDigits
和 fractionDigits
。
Carthage
出于某种原因(截至 9.0),Xcode 不支持(外部框架的)@IBInspectable
属性。这意味着您不能在 IB 中配置上述属性。但是,您可以向下面的代码添加到您的一个视图控制器中,以欺骗 IB 渲染 NumericPicker
时的默认值:
@IBDesignable extension NumericPicker { }
代码
如你对子视图进行添加操作一样,从代码中添加一个 NumericPicker
控件。以下是从 NumericPicker-Example/ViewController.swift
中获取的代码,用于生成底部示例的 NumericPicker
。请注意,通常不需要设置 locale
,因为 NumericPicker
默认会使用当前设备的本地化设置。
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)
codePickerStack.addArrangedSubview(codeNumericPicker)
作者
Matt Lewin,[email protected]
授权
NumericPicker 在 MIT 许可证下可用。更多详情请参阅 LICENSE.md。