RESegmentedControl
RESegmentedControl 是可自定义的可折叠控制栏,提供样式预设。
主要功能 | |
---|---|
支持样式预设 | |
支持文本和图像 | |
支持垂直和水平内容布局 | |
可下载和缓存图像 | |
段选择之间的自然平滑动画 | |
布局驱动的 UI | |
使用 Swift 编写 |
预览
如何使用
- 将 RESegmentedControl 导入到您的类中
import RESegmentedControl
- 将
UIView
添加到 Storyboard 的 ViewController。将类和模块更改为RESegmentedControl
,并将 @IBOutlet 更改为您的 ViewController
/// Segmented Control
@IBOutlet weak var segmentedControl: RESegmentedControl!
或者以程序方式创建 RESegmentedControl
let segmentedControl = RESegmentedControl(frame: CGRect(x: 0, y: 0, width: 200, height: 44))
self.view.addSubview(segmentedControl)
// TODO: Add segmentedControl Auto-Layouts…
- 使用项目项和预设配置您的 segmentedControl
// Specify a list of string that will be shown
let titles = ["safari", "chrome", "firefox"]
// Map a list of string to the [SegmentModel]
var segmentItems: [SegmentModel] {
return titles.map({ SegmentModel(title: $0) })
}
// Create a preset to style the segmentedControl
let preset = BootstapPreset(backgroundColor: .white, selectedBackgroundColor: .black)
// segmentedControl configuration method
segmentedControl.configure(segmentItems: segmentItems, preset: preset)
要了解更多信息,请查看示例项目。
布局类型
RESegmentedControl
使用一个 SegmentModel
列表初始化。 RESegmentedControl
可以以三种方式显示,仅文本、仅图像或文本和图像结合。
- 要显示带有 文本 的分段,请使用
title
变量初始化一个SegmentModel
let segmentsItem: [SegmentModel] = [SegmentModel(title: “Title”)]
- 要显示图片,请使用
imageName
变量初始化一个SegmentModel
let segmentsItem: [SegmentModel] = [SegmentModel(imageName: “imageNameInAseetCatalog”)]
使用imageUrl
变量初始化一个SegmentModel
从远程服务器加载图片
let imageUrl = “https://domain.com/image.png”
let segmentsItem: [SegmentModel] = [SegmentModel(imageUrl: imageUrl)]
- 要显示文本和图片,请使用
title
和imageName
或imageUrl
变量初始化一个SegmentModel
let segmentsItem: [SegmentModel] = [SegmentModel(title: “Title”, imageName: “imageNameInAseetCatalog”)]
// Image remote location url
let imageUrl = “https://domain.com/image.png”
let segmentsItem: [SegmentModel] = [SegmentModel(title: “Title”, imageUrl: imageUrl)]
更多详细信息,请参阅演示项目中
BasicExampleViewController
API
- 动态添加项目
func addItem(_ item: SegmentModel, atIndex index: Int? = nil)
- 动态移除项目
func removeItem(atIndex index: Int? = nil)
- 返回分段项目数量
var segmentItemsCount: Int
- 返回或动态更改选中索引
var selectedSegmentIndex: Int
- 取消选中分段项目
func deselect()
- 替换分段项目
func replaceItem(_ item: SegmentModel, atIndex index: Int)
更多详细信息,请参阅演示项目中
ActionViewController
预设和样式
RESegmentedControl
支持广泛的定制外观。也可以应用已准备好的样式预设或创建自己的预设。
目前有4个预设可用
- iOS7Preset - 将样式设置为iOS7系统风格。
struct iOS7Preset: SegmentedControlPresettable
- iOS13Preset - 将样式设置为iOS13系统风格。
struct iOS13Preset: SegmentedControlPresettable
- MaterialPreset - 将样式设置为客户材质风格。
struct MaterialPreset: SegmentedControlPresettable
- BootstapPreset - 预设带有最少的前置样式,旨在将预设定制到满足您需求的程度。
struct BootstapPreset: SegmentedControlPresettable
更多详细信息,请参阅演示项目中
PresetsViewController
要了解更多关于创建预设的信息,请遵循高级样式指南。
安装
要获取更多信息,请参阅完全的API参考,并查看存储库中包含的演示项目。准备安装时,请按照安装指南操作。
要求
应用版本 | Swift | Xcode | 平台 |
---|---|---|---|
当前版本 | Swift 5.0 | Xcode 12 | iOS 9.0 |
贡献
欢迎提交拉取请求。对于重大更改,请先打开一个问题单来讨论您希望进行的更改。
请确保根据需要更新测试。
灵感
作者
Sherzod Khashimov
更改日志
查看更改日志
许可
RESegmentedControl遵循MIT许可。有关更多信息,请参阅LICENSE文件。