CellPickerView
Swift UIView,允许用户通过流畅的用户体验选择选项。
描述
CellPickerView 是一个 UIView 子类,允许用户从选项列表中选择一个或多个选项,将选择逻辑和动画封装起来。单元格可以包含文本、图标或两者都包含。
示例预览
待办事项
- 基本功能
- 动画
- 边框
- 通过 Cocoapods 发布
- 复杂动画
- 每个单元格的 UI 定制委托
安装
Cocoapods
在您的Podfile中添加以下行
pod 'CellPickerView'
使用
通过Storyboard初始化
- 将UIView添加到您的视图控制器中
- 在右侧边栏中,根据身份检查器,将UIView的类和模块设置为CellPickerView
- 将输出引用拖动到您的视图控制器中
或者,您可以通过视图控制器实例化视图来初始化视图,使用其中一个初始化器
let cellPickerView = CellPickerView()
- 使您的视图控制器遵守CellPickerDataSource协议
extension ViewController: CellPickerDataSource {
func numberOfCells(inPicker picker: CellPickerView) -> Int {
return 4
}
func cell(forPicker picker: CellPickerView, atIndex index: Int) -> CellAdapter {
return CellAdapter(image: UIImage(named: "Icon")!, label: index == 0 ? "Foo")
}
}
注意:CellAdapter是一个用于向选择器视图提供数据的适配器。您使用图标、文本或两者初始化CellAdapter
- 设置pickerview的数据源
cellPickerView.dataSource = self
- 如有需要,自定义pickerview的UI
override func viewDidLoad(){
cellPicker.selectionAnimation = .bubble // Animation Type
cellPicker.cellCornerRadius = 3 // Corner radius of each cell
cellPicker.cellBorderColor = UIColor.blue.cgColor
cellPicker.cellBorderWidth = 2
cellPicker.canSelectMultiple = true // Set to true if the user can select multiple cells at the same time. If set to false the user's selection will be deselected upon new selection.
cellPicker.unselectedTextColor = UIColor.blue
cellPicker.spacing = 8 //Spacing between
cellPicker.reloadData()
}
注意:您必须在自定义cellPickerView之后调用reloadData
,如果在此之前设置了数据源,以确保新更改得以传播
属性
属性 | 描述 | 默认 |
---|---|---|
animationDuration | 选择动画的持续时间。如果选择Animation设置为.noAnimation,则此字段将丢弃 | 0.2 |
canSelectMultiple | 如果用户可以同时选择多个单元格,则将其设置为true。如果设置为false,则选中单元格将在新选择时取消选中 | true |
selectedTextColor | 选中状态下标签的颜色 | white |
unselectedTextColor | 正常状态下的标签颜色 | black |
selectedBackgroundColor | 选中状态下单元格的背景颜色 | blue |
unselectedBackgroundStateColor | 正常状态下单元格的背景颜色 | white |
maxWidth | 如果设置,该值将用于计算单元格宽度。否则,单元格将尽可能大。 | 空值 |
间距 | 单元格间的间距。注意,最左端和最右端的单元格与边框的间距将为0,无论此值为何。 | 0 |
cellBorderWidth | 每个单元格边框的宽度 | 0 |
cellBorderColor | 单元格边框的颜色 | 空值 |
cellCornerRadius | 单元格角落的半径 | 0 |
selectionAnimation | 在选中时执行动画 | .bubble |
贡献
如果您有任何问题或想要请求新功能,请创建一个问题。如果您想贡献,请提交一个拉取请求。