RESegmentedControl 0.5.4

RESegmentedControl 0.5.4

Sherzod Khashimov 维护。




  • 作者:
  • Sherzod Khashimov

RESegmentedControl

Swift Version CI Status Version Support Platform Documentation

RESegmentedControl 是可自定义的可折叠控制栏,提供样式预设。

主要功能
🎨 支持样式预设
🎫 支持文本和图像
🧮 支持垂直和水平内容布局
📥 可下载和缓存图像
🎢 段选择之间的自然平滑动画
🥌 布局驱动的 UI
🚀 使用 Swift 编写

预览

如何使用

  • RESegmentedControl 导入到您的类中
import RESegmentedControl
  • UIView 添加到 Storyboard 的 ViewController。将类和模块更改为 RESegmentedControl,并将 @IBOutlet 更改为您的 ViewController

storyboard

/// 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)]
  • 要显示文本图片,请使用titleimageNameimageUrl变量初始化一个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文件。