TOSegmentedControl
作为 iOS 13 中特具视觉优化的部分,UISegmentedControl
完全重新设计,具有更圆滑、更干净,以及略微拟物化的外观。
TOSegmentedControl
是 UIControl
的子类,完全重新实现了新 UISegmentedControl
组件的外观和感觉,使开发者能够在支持 iOS 的先前版本中采用其外观。
功能
- 重新创建
UISegmentedControl
的新外观,使其在之前的 iOS 版本中可用。 - 支持文本和图像作为段类型。
- 支持
@IBDesignable
和@IBInspectable
。 - 可配置在创建后动态添加或删除项。
- 使用 Objective-C 编写,但完全兼容 Swift。
- 提供块或
UIControlEvents
来接收当控件被点击时的通知。 - 支持 iOS 13 的浅色和深色模式。
- 一个可反转的模式,其中连续点击同一项会翻转其方向。
示例代码
TOSegmentedControl
的编写是为了尽可能地遵循 UISegmentedControl
的接口。这应该使它的工作变得非常直观。
Swift
在 Swift 中,类被重命名为 SegmentedControl
。创建新实例的方式与 UISegmentedControl
非常相似。
// Create a new instance
let segmentedControl = SegmentedControl(items: ["First", "Second", "Third"])
// Add a closure that will be called each time the selected segment changes
segmentedControlsegmentTappedHandler = { segmentIndex, reversed in
print("Segment \(segmentIndex) was tapped!")
}
// Add a new item to the end
segmentedControl.addSegment(withTitle: "Fourth")
// Insert a new item at the beginning
segmentedControl.insertSegment(withTitle: "Zero", at: 0)
// Remove all segments
segmentedControl.removeAllSegments()
Objective-C
NSArray *items = @[@"First", @"Second", @"Third"];
// Create a new instance
TOSegmentedControl *segmentedControl = [[TOSegmentedControl alloc] initWithItems:items]];
// Add a block that will be called each time the selected segment changes
segmentedControl.segmentTappedHandler = ^(NSInteger index, BOOL reversed) {
NSLog(@"Segment %d was tapped!", index);
};
// Add a new item to the end
[segmentedControl addSegmentWithTitle:@"Fourth"];
// Insert a new item at the beginning
[segmentedControl insertSegmentWithTitle:@"Zero" atIndex:0];
// Remove all segments
[segmentedControl removeAllSegments];
系统要求
iOS 9.0 或更高版本
安装
CocoaPods
在您的 Podfile 中添加以下内容
pod 'TOSegmentedControl'
Carthage
- 在您的 Cartfile 中添加以下内容
github "TimOliver/TOSegmentedControl"
-
运行
carthage update
-
从
Carthage/Build
文件夹中,导入TOSegmentedControl.framework
。 -
按照 Carthage 入门 中的剩余步骤完成框架集成。
手动安装
所有必要的源文件都位于 TOSegmentedControl
文件夹中。只需将该文件夹拖到您的 Xcode 项目中。
致谢
TOSegmentedControl
由 Tim Oliver 创建,作为 iComics 的组件。
由 Pixeden 提供的 iOS 设备原型。
许可
TOSegmentedControl
在MIT许可证下可用。更多信息请参阅 LICENSE 文件。