JNSegmentedControl
JNSegmentedControl 是一个使用 Swift 编写的易于使用的,带有动画的 iOS 分段控件。
JNSegmentedControl 支持以下三种主要的分段样式:仅文本、仅图片、带有图片的文本(在文本下、上、前和后)。
预览
需求
- Xcode 9
- iOS 9.0+
- Swift 4.2+
安装
JNSegmentedControl 通过 CocoaPods 提供。要安装它,只需在 Podfile 中添加以下行
pod 'JNSegmentedControl'
用法
- 导入 JNSegmentedControl 模块
import JNSegmentedControl
-
初始化
-
场景板:您可以通过手动方式将 UIView 实例添加到 Xib 中,设置 'JNSegmentedControl' 类并连接 @IBOutlet 引用。
-
编程方式:以编程方式初始化 ‘JNSegmentedControl’ 的 UIView 实例。
let segmentedControlView = JNSegmentedCollectionView() self.view.addSubview(segmentedControlView)
-
-
设置
- JNSegmentedControl 设置
self.segmentedControlView.setup( items: [NSAttributedString], selectedItems: [NSAttributedString], options: JNSegmentedCollectionOptions(), badgeCounts: [Int] )
要使用默认选项,可以将选项参数传递为 (nil) 值。
self.segmentedControlView.setup( items: [NSAttributedString], selectedItems: [NSAttributedString], options: nil, badgeCounts: [] )
- 配置项目
分段控件的项目和选中项目是一个 NSAttributedString 数组。为了设置项目,您需要提供一个 [NSAttributedString] 的实例。
-
默认项目
var items = [NSAttributedString]() let item = NSAttributedString(string: “Default Item", attributes: []) items.append(item)
-
选中项目
var items = [NSAttributedString]() let item = NSAttributedString(string: “Selected Item", attributes: []) items.append(item)
-
处理回调
self.segmentedControlView.didSelectItem = { segment in print("Selected item: ", segment) }
-
选项自定义
- backgroundColor:分段控制背景颜色。
- itemOptionType:从 JNSegmentedCollectionItemOptionType 枚举中选择值。
- layoutType:从 JNSegmentedCollectionLayoutType 枚举中选择值。
- verticalSeparatorOptions:作为段之间的垂直分隔符的 JNSegmentedCollectionItemVerticalSeparatorOptions 结构的实例。
- scrollEnabled:分段控件启用滚动。
- contentItemLayoutMargins:从左侧和右侧的内容项目布局边距。
JNSegmentedCollectionOptions( backgroundColor: UIColor.white, itemOptionType: JNSegmentedCollectionItemOptionType, layoutType: JNSegmentedCollectionLayoutType.dynamic, verticalSeparatorOptions: JNSegmentedCollectionItemVerticalSeparatorOptions? = nil, scrollEnabled: true, contentItemLayoutMargins: 10.0 )
-
JNSegmented Collection Item Option Type
分段控件项目有两种布局样式
- single(option: JNSegmentedCollectionItemOptions): 所有项目的单个选项。
- multiple(options: [JNSegmentedCollectionItemOptions]): 所有项目的多个选项。
enum JNSegmentedCollectionItemOptionType { case single(option: JNSegmentedCollectionItemOptions) case multiple(options: [JNSegmentedCollectionItemOptions]) }
-
JNSegmented Collection Item Options
分段控件具有配置每个项的能力,以下是一些设置
- CornerRadius: 容器视图的圆角半径。
- BackgroundColor: 容器视图的背景颜色。
- SelectedBackgroundColor: 容器视图的选中背景颜色。
- BadgeBackgroundColor: 徽章计数的背景颜色。
- SelectedBadgeBackgroundColor: 选中徽章计数的背景颜色。
- BadgeFont: 徽章计数的字体。
- SelectedBadgeFont: 选中徽章计数的字体。
- BadgeTextColor: 徽章计数的文本颜色。
- SelectedBadgeTextColor: 选中徽章计数的文本颜色。
JNSegmentedCollectionItemOptions(cornerRadius: 10.0, backgroundColor: #colorLiteral(red: 0.456212461, green: 0.7545028329, blue: 0.8568375707, alpha: 1), selectedBackgroundColor: #colorLiteral(red: 0.1984777451, green: 0.7956866622, blue: 1, alpha: 1), badgeBackgroundColor: .white, selectedBadgeBackgroundColor: .white, badgeFont: UIFont.systemFont(ofSize: 16.0), selectedBadgeFont: UIFont.systemFont(ofSize: 16.0), badgeTextColor: .gray, selectedBadgeTextColor: .gray)
-
JNSegmented Collection Layout Type
分段控件有两种项目布局样式
- Dynamic: 每个项目的宽度将根据其内容而变化。
- Fixed: 每个项目的宽度将根据最大可见项目固定。
enum JNSegmentedCollectionLayoutType { case dynamic case fixed(maxVisibleItems: Int) }
-
JNSegmented Vertical Separator Options
分段控件具有显示项目之间分隔线的功能,以下是一些设置
- HeigthRatio: 分隔视图高度与集合视图高度的比例,最大值为 1,最小值为 0。
- Width: 分隔视图的宽度。
- Color: 分隔视图的背景颜色。
JNSegmentedCollectionItemVerticalSeparatorOptions ( heigthRatio: 0.3, width: 1.0, color: UIColor.blue )
例子
要运行示例项目,请克隆存储库,然后首先从 Example 目录运行 pod install
。
作者
Jayel Zaghmoutt, Mohammad Nabulsi & Mohammad Ihmouda
许可证
JNSegmentedControl 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。