ItemPickerView 1.0

ItemPickerView 1.0

Theodore Gallao 维护。



  • Theodore Gallao

ItemPickerView

水平滑动或轻按以选择分段项。

Demo Applied Demo

ItemPickerViewUIView 子类,它作为一个包含的项的选择器。可以通过轻按或滑动(也可以通过编程方式选择)来选择项,选中的项将被放置在视图的水平中心。通过数据源传递 Item 对象并通过委托处理选择等事件,就像 UICollectionViewUITableView 数据源和委托一样。因为它只是一个视图,所以你可以将 ItemPickerView 布局和约束到任何合理的维度,使其具有多功能性和适用于各种场景。

先决条件

Swift 4.2+, iOS 10+, CocoaPods

安装

通过在 Podfile 中添加以下内容使用 CocoaPods 进行安装

pod 'ItemPickerView'

用法

导入框架

import ItemPickerView

创建一个 ItemPickerView 对象

var itemPickerView: ItemPickerView!

override func viewDidLoad() {
    super.viewDidLoad()
    
    self.itemPickerView = ItemPickerView()
}

设置 ItemPickerView 属性

override func viewDidLoad() {
    // ...
    
    self.itemPickerView.backgroundColor = UIColor.black
    self.itemPickerView.gradientColor = UIColor.black
    self.itemPickerView.gradientWidth = 75
    self.itemPickerView.translatesAutoresizingMaskIntoConstraints = false
}

设置委托和数据源。确保它们遵循 ItemPickerViewDelegateItemPickerViewDataSource 协议

override func viewDidLoad() {
    // ...
    
    self.itemPickerView.delegate = self
    self.itemPickerView.dataSource = self
} 

布局 ItemPickerView

override func viewDidLoad() {
    // ...
    
    self.view.addSubview(self.itemPickerView)
    self.itemPickerView.heightAnchor.constraint(equalToConstant: 44).isActive = true
    self.itemPickerView.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor, constant: 0).isActive = true
    self.itemPickerView.leftAnchor.constraint(equalTo: self.view.leftAnchor, constant: 0).isActive = true
    self.itemPickerView.rightAnchor.constraint(equalTo: self.view.rightAnchor, constant: 0).isActive = true
} 

设置项

var items: [Item]!

override func viewDidLoad() {
    // ...
    
    let item = Item(text: "Item", selectedColor: UIColor.yellow)
    let anotherItem = Item(text: "Another Item", font: UIFont.systemFont(ofSize: 14, weight: UIFont.Weight.bold), color: UIColor.cyan.withAlphaComponent(0.7), selectedColor: UIColor.cyan)
    let lastItem = Item(text: "Last Item", color: UIColor.orange.withAlphaComponent(0.7), selectedColor: UIColor.orange)
    self.items = [item, anotherItem, lastItem]
} 

实现数据源函数,并处理委托函数(可选)。确保它们符合ItemPickerViewDelegateItemPickerViewDataSource协议。

// Return number of items
func itemPickerViewNumberOfItems(_ itemPickerView: ItemPickerView) -> Int {
    return self.items.count
}

// Return Item at index
func itemPickerView(_ itemPickerView: ItemPickerView, itemAtIndex index: Int) -> Item {
    return self.items[index]
}

// Called when item is selected
func itemPickerView(_ itemPickerView: ItemPickerView, didSelectItemAtIndex index: Int) {
    // Handle item selection at given index.
}

外观

修改ItemPickerViewItem的外观属性

ItemPickerView

ItemPickerView的外观属性。

渐变宽度 - 左右渐变的宽度,默认为100,设置为0以移除渐变

self.itemPickerView.gradientWidth = 100

渐变颜色 - 左右渐变的颜色,默认为UIColor.black。理想情况下,设置为与self.itemPickerView.backgroundColor相同的值

self.itemPickerView.gradientColor = UIColor.black

Item

Item的外观属性,默认为""

文本 - 该项的文本

let item = Item()
item.text = ""

字体 - 该项文本的字体,默认为UIFont.systemFont(ofSize: 15, weight: UIFont.Weight.semibold)

let item = Item()
item.font = UIFont.systemFont(ofSize: 15, weight: UIFont.Weight.semibold)

颜色 - 该项文本的颜色,默认为UIColor.gray

let item = Item()
item.color = UIColor.gray

选中颜色 - 该项的选中颜色,默认为Default UIColor.black

let item = Item()
item.selectedColor = Default UIColor.black

作者

塞奥德·盖劳 - GitHub

许可证

本项目采用MIT许可证。请参阅LICENSE.md