McPicker
关于
McPicker 是一个具有动画效果的 UIPickerView 即插即用解决方案,支持旋转。传递的字符串数组越多,得到的选择器组件就越多。您可以设置自定义标签或使用默认值。McPicker 可以通过使用 showAsPopover
在 iPhone 或 iPad 上以弹出视图的形式显示,使用 McTextField
以 inputView
的形式使用,或者使用默认的上下滑动样式 show
。
showAsPopover
可以用于从 UIView
或 UIBarButtonItem
显示。当在 iPhone 上使用时,showAsPopover
总是以弹出视图的形式显示。
使用
要运行示例项目,请克隆仓库,然后首先从 Example 目录运行 pod install
。
简短语法
- 正常 - (从底部滑动上来)
McPicker.show(data: [["Kevin", "Lauren", "Kibby", "Stella"]]) { [weak self] (selections: [Int : String]) -> Void in
if let name = selections[0] {
self?.label.text = name
}
}
- 作为弹出视图
let data: [[String]] = [["Kevin", "Lauren", "Kibby", "Stella"]]
McPicker.showAsPopover(data: data, fromViewController: self, barButtonItem: sender) { [weak self] (selections: [Int : String]) -> Void in
if let name = selections[0] {
self?.label.text = name
}
}
- 通过
McTextField
作为inputView
@IBOutlet weak var mcTextField: McTextField!
override func viewDidLoad() {
let data: [[String]] = [["Kevin", "Lauren", "Kibby", "Stella"]]
let mcInputView = McPicker(data: data)
mcInputView.backgroundColor = .gray
mcInputView.backgroundColorAlpha = 0.25
mcTextField.inputViewMcPicker = mcInputView
mcTextField.doneHandler = { [weak mcTextField] (selections) in
mcTextField?.text = selections[0]!
}
mcTextField.selectionChangedHandler = { [weak mcTextField] (selections, componentThatChanged) in
mcTextField?.text = selections[componentThatChanged]!
}
mcTextField.cancelHandler = { [weak mcTextField] in
mcTextField?.text = "Cancelled."
}
mcTextField.textFieldWillBeginEditingHandler = { [weak mcTextField] (selections) in
if mcTextField?.text == "" {
// Selections always default to the first value per component
mcTextField?.text = selections[0]
}
}
}
定制
let data: [[String]] = [
["Sir", "Mr", "Mrs", "Miss"],
["Kevin", "Lauren", "Kibby", "Stella"]
]
let mcPicker = McPicker(data: data)
let customLabel = UILabel()
customLabel.textAlignment = .center
customLabel.textColor = .white
customLabel.font = UIFont(name:"American Typewriter", size: 30)!
mcPicker.label = customLabel // Set your custom label
let fixedSpace = McPickerBarButtonItem.fixedSpace(width: 20.0)
let flexibleSpace = McPickerBarButtonItem.flexibleSpace()
let fireButton = McPickerBarButtonItem.done(mcPicker: mcPicker, title: "Fire!!!") // Set custom Text
let cancelButton = McPickerBarButtonItem.cancel(mcPicker: mcPicker, barButtonSystemItem: .cancel) // or system items
// Set custom toolbar items
mcPicker.setToolbarItems(items: [fixedSpace, cancelButton, flexibleSpace, fireButton, fixedSpace])
mcPicker.toolbarItemsFont = UIFont(name:"American Typewriter", size: 17)!
mcPicker.toolbarButtonsColor = .white
mcPicker.toolbarBarTintColor = .darkGray
mcPicker.backgroundColor = .gray
mcPicker.backgroundColorAlpha = 0.50
mcPicker.pickerBackgroundColor = .gray
mcPicker.pickerSelectRowsForComponents = [
0: [3: true],
1: [2: true] // [Component: [Row: isAnimated]
]
if let barButton = sender as? UIBarButtonItem {
// Show as Popover
//
mcPicker.showAsPopover(fromViewController: self, barButtonItem: barButton) { [weak self] (selections: [Int : String]) -> Void in
if let prefix = selections[0], let name = selections[1] {
self?.label.text = "\(prefix) \(name)"
}
}
} else {
// Show Normal
//
mcPicker.show(doneHandler: { [weak self] (selections: [Int : String]) -> Void in
if let prefix = selections[0], let name = selections[1] {
self?.label.text = "\(prefix) \(name)"
}
}, cancelHandler: {
print("Canceled Styled Picker")
}, selectionChangedHandler: { (selections: [Int:String], componentThatChanged: Int) -> Void in
let newSelection = selections[componentThatChanged] ?? "Failed to get new selection!"
print("Component \(componentThatChanged) changed value to \(newSelection)")
})
}
选择
McPicker 的 doneHandler
使用参数 selections: [Int : String]
返回。这和从您传入的 data
中得到的结果一样简单,即 [<Component Index>: <Selection String>]
。
要求
- iOS 8+
- Swift 5.2
- Xcode 12
注意:从 0.5.1 版本开始,McPicker 使用 Swift 4 编译器。请确保在项目中设置了正确的编译器。如果您想使用 Swift 3,请使用版本 <=0.5.0。
安装
McPicker 可以通过 CocoaPods 获取。要安装它,请将以下行添加到您的 Podfile 中
pod "McPicker"
Xcode 12+ - Swift 5.2 支持
pod 'McPicker', '~> 3.0.0'
Swift 4.2 支持
对于 Swift 4.2 支持,请使用版本 2.0.0
。
pod 'McPicker', '~> 2.0.0'
作者
Kevin McGill, [email protected]
许可证
McPicker遵循MIT许可证。有关更多信息,请参阅LICENSE文件。