ResizingTokenField
使用 Swift 5 编写的标记字段实现。
特性
- 可以在 Interface Builder 中使用或通过编程创建
- 使用
UICollectionView
来显示标记,允许标记变化时进行动画处理 - 自动更新内建高度,当内容添加和移除时
- 支持将标记折叠成文本描述
- 允许为标记提供自定义的
UICollectionViewCell
安装
Cocoapods
ResizingTokenField 通过 CocoaPods 提供使用。要安装它,请在您的 Podfile
中添加以下内容
pod 'ResizingTokenField', '~> 0.1.1'
Carthage
要通过Carthage进行安装,请在您的Cartfile
中添加以下内容
github "tadejr/ResizingTokenField" "0.1.1"
用法
可以使用Interface Builder使用令牌字段 - 在布局中添加一个空的UIView
并将其类设置为ResizingTokenField
。它还可以通过使用init(frame:
)来以编程方式初始化。
适用于自动布局;它提供内在内容高度,这意味着您只需固定其位置和宽度,宽度将随着内容添加到字段中而自动更改。在Interface Builder中,可以使用占位符内在尺寸设置来进行高度。
配置
可以通过设置适当的属性在ResizingTokenField
实例上进行自定义。此外,还可以设置三个不同的委托来处理特定行为。请检查示例项目以获取更多信息。
旋转支持
令牌字段不会在边界改变时自动无效化布局。要处理设备旋转,您应手动无效化布局。
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
tokenField.invalidateLayout()
}
高度更改动画
要动画化令牌字段高度的变化,应在令牌字段内在高度更改时在对视图存在适当的父视图上调用layoutIfNeeded()
。
func resizingTokenField(_ tokenField: ResizingTokenField, willChangeIntrinsicHeight newHeight: CGFloat) {
view.layoutIfNeeded()
}
func resizingTokenField(_ tokenField: ResizingTokenField, didChangeIntrinsicHeight newHeight: CGFloat) {
UIView.animate(withDuration: tokenField.animationDuration) {
self.view.layoutIfNeeded()
}
}
作者
Tadej Razborsek,[email protected]
通过
许可信息ResizingTokenField可用MIT许可。更多信息请参阅LICENSE文件。