DownPickerSwift
DownPickerSwift 是一个用于创建 iOS 下拉列表/组合框控件的极度轻量级类库,它将表现出与 HTML/Android 对应的类似行为。您只需要标准的 UITextField 和几行代码。
此库受到了 DownPicker 的启发。
功能介绍
它可以将代码中已经存在的任何 UITextField(包括那些添加到 Storyboard 中的UITextField)
转换成这样
就是这样简单。您只需要提供一个数据数组。
注意:如果您不喜欢 控制包装器 方法,您也可以通过包含的 UIDownPicker 类将其用作 自定义控件:阅读以下段落以获取更多信息。
工作原理
DownPicker基本上是一个 控制界面包装器,这意味着您不会将其作为控件来使用,而是它会使用现有的 UITextField 控件。这是好事,因为您将能够像平时一样设计、定位和定制您的 UITextField,无论是通过编程还是在一个 Storyboard UI 中,具体取决于您的工作方式。您不会改变您的样式,它会适应您的设计。
然而,如果您不喜欢控制包装模式,只需将其作为自定义控制使用所包含的UIDownPicker类即可。这完全由您自己决定(并且在这两种情况下都非常容易安装)。
需求
- iOS 9.0+
- Xcode 10.0+
安装
依赖管理器
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。可以使用以下命令安装它
$ gem install cocoapods
要将 DownPickerSwift 集成到您的 Xcode 项目中,请使用 CocoaPods 在您的 Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
pod 'DownPickerSwift', '~> 1.1.1'
然后,运行以下命令
$ pod install
Carthage
Carthage 是一个分散式的依赖管理器,可以自动将框架添加到您的 Cocoa 应用程序中。
您可以使用 Homebrew 来安装 Carthage,以下是命令
$ brew update
$ brew install carthage
要将 DownPickerSwift 集成到您的 Xcode 项目中,请使用 Carthage 在您的 Cartfile
中指定它
github "HomebaseAI/DownPickerSwift" ~> 1.1.1
手动
如果您不想使用上述任何依赖管理器,您也可以手动将 DownPickerSwift 集成到项目中。
Git 子模块
- 打开终端,
cd
到您的顶级项目目录,如果您的项目尚未初始化为 git 仓库,请运行以下命令
$ git init
- 通过运行以下命令将 DownPickerSwift 添加为 git 子模块
$ git submodule add https://github.com/HomebaseAI/DownPickerSwift.git
$ git submodule update --init --recursive
-
打开新的
DownPickerSwift
文件夹,并将DownPicker.xcodeproj
拖动到您的应用程序的 Xcode 项目的项目导航器中。它应该出现在您的应用程序蓝色项目图标之下。它是在所有其他 Xcode 组之上还是之下并不重要。
-
在项目导航器中选择
DownPicker.xcodeproj
,并验证部署目标与您的应用程序目标相匹配。 -
接下来,在选择您的应用程序项目(蓝色项目图标)以导航到目标配置窗口的情况下,在侧边栏的“目标”下选择应用程序目标。
-
在该窗口顶部选项卡栏中打开“常规”面板。
-
在“嵌入的二进制文件”部分下点击
+
按钮。 -
您将看到两个不同的
DownPicker.xcodeproj
文件夹,每个文件夹中都有一个DownPicker.framework
的不同版本,这都位于一个Products
文件夹中。您选择的哪个
Products
文件夹无关紧要。 -
选择
DownPicker.framework
。 -
就这么多!
DownPicker.framework
将自动作为目标依赖项、链接框架和嵌入框架添加到复制文件构建阶段,这就是在模拟器和设备上构建所需的全部内容。
嵌入的二进制文件
- 从https://github.com/HomebaseAI/DownPickerSwift/releases下载最新版本
- 接下来,在选择您的应用程序项目(蓝色项目图标)以导航到目标配置窗口的情况下,在侧边栏的“目标”下选择应用程序目标。
- 在该窗口顶部选项卡栏中打开“常规”面板。
- 在“嵌入的二进制文件”部分下点击
+
按钮。 - 添加下载的
DownPicker.framework
。 - 就这么多!
使用方法
一旦您已安装DownPicker并将其包含到项目中,您可以选择将其用作控制器包装器或自定义控件:选择权取决于您,根据您的编程风格而定。
作为控制器包装器
添加(或选择)您想转换为DownPicker的UITextField
。您可以使用Storyboard设计师工具或通过编程方式实现;您还可以设置约束、自定义位置/坐标、字体、颜色等任何您喜欢的。完成之后,打开控制器并为DownPicker包装器创建一个属性
import DownPicker
let textField = UITextField()
let picker: DownPicker?
然后在控制器中的viewDidLoad
方法中添加以下行
let dummyData = ["R.E.M.", "Dire Straits", "Police", "Sex Pistols", "Pink Floyd"]
picker = DownPicker(with: textField, data: dummyData)
就这么多。您可以使用self.datePicker.text
或textField.text
在任意时间检索用户的选项。
作为自定义控件
如果您想将DownPicker作为自定义控件使用,只需程序化实例化所提供的UIDownPicker
类并将其附加到您的视图中,就像任何其他UI控件一样。
import DownPicker
let picker: UIDownPicker?
然后在控制器中的viewDidLoad
方法中添加以下行
let dummyData = ["R.E.M.", "Dire Straits", "Police", "Sex Pistols", "Pink Floyd"]
picker = UIDownPicker(with: dummyData)
状态改变事件处理
您可以通过以下方式使用UIControlEventValueChanged
控制操作将您自己的委托函数绑定到DownPicker的状态改变:
picker?.addTarget(self, action: #selector(printTest(selectedValue:)), for: .valueChanged)
@objc private func printTest(selectedValue: DownPicker) {
print(selectedValue.text)
}
其他功能
您还可以
- 使用
downPicker.setData(newData: [String])
方法延迟加载数据。 - 使用
downPicker.showArrowImage = false
方法禁用右侧箭头图像。 - 使用
downPicker.setArrowImage(newImage: UIImage)
使用自定义右侧箭头图像。 - 使用
downPicker.setPlaceholder(newString: String)
和downPicker.setPlaceholderWhileSelecting(newString: String)
方法配置(和/或本地化)占位符文本字符串。 - 使用
downPicker.getPickerView()
方法获取、自定义并连接内部 UIPickerView 控制器(请自行承担风险)。 - 使用
downPicker.getTextView()
方法获取、自定义并连接内部 UITextField 控制器(请自行承担风险)。请记住,如果您使用了包装器,它就是您传递的确切相同控制器,所以您可能更喜欢使用您的主要引用。 - 在实例化 DownPicker 后,将布尔标志属性
shouldDisplayCancelButton
设置为false
可以移除取消按钮。 - 使用
setToolbarTitle(newTitle: String)
为工具栏添加标题,从而提供有关选择器用途的更多上下文。
贡献
欢迎提出问题和拉取请求!
作者
此库受到了 DownPicker 的启发。
由 @HomebaseAI 拥有并由 chickdan 维护。
许可
DownPickerSwift 已在 MIT 许可下发布。有关详细信息,请参阅 LICENSE。