*** 附加功能
1) TNCheckBoxGroupView:用于 Interface Builder
2) 访问最后交互项:TNCheckBoxGroup.lastChangeItem
3) 从复选框数据访问复选框:TNCheckBoxData.checkbox
您可以使用 TNCheckBoxGroup 类来使用一些预置的复选框,或者很容易地扩展它以适应您的设计。每个复选框都有一个选中动画。当文本超过可用的空间时,它将自动在多行中换行。
当前版本支持 3 种不同的复选框
圆形复选框
方形复选框
自定义图表示例复选框
pod 'TNCheckBoxGroup'
添加到您的 Podfile。导入TNCheckBoxGroup.h
文件。
为复选框组中的每个选项创建数据对象。您可以使用以下数据对象:TNCircularCheckBoxData
,TNRectangularCheckBoxData
,TNImageCheckBoxData
。
每个数据对象都是TNCheckBoxData
的子类,但具有您可以设置的特定属性。
您可以为每个数据对象设置以下属性
属性 | 功能 |
---|---|
identifier | 为复选框设置可读名称 |
labelText | 设置标签文本 |
checked | 设置选中状态 |
labelFont | 设置标签字体 |
labelColor | 设置标签颜色 |
不同的类有如下额外的属性
参数 | 功能 |
---|---|
borderColor | 设置外部圆的外边框颜色 |
circleColor | 设置内部圆的颜色 |
borderRadius | 设置外部圆的半径 |
circleRadius | 设置内部圆的颜色 |
示例
TNCircularCheckBoxData *bananaData = [[TNCircularCheckBoxData alloc] init];
bananaData.identifier = @"banana";
bananaData.labelText = @"Banana";
bananaData.checked = YES;
bananaData.borderColor = [UIColor blackColor];
bananaData.circleColor = [UIColor blackColor];
bananaData.borderRadius = 20;
bananaData.circleRadius = 15;
参数 | 功能 |
---|---|
borderColor | 设置外部矩形的边框颜色 |
rectangleColor | 设置内部矩形的颜色 |
borderWidth | 设置外部矩形的宽度 |
borderHeight | 设置外部矩形的高度 |
rectangleWidth | 设置内部矩形的宽度 |
rectangleHeight | 设置内部矩形的高度 |
示例
TNRectangularCheckBoxData *tennisData = [[TNRectangularCheckBoxData alloc] init];
tennisData.identifier = @"tennis";
tennisData.labelText = @"Tennis";
tennisData.borderColor = [UIColor grayColor];
tennisData.rectangleColor = [UIColor grayColor];
tennisData.borderWidth = tennisData.borderHeight = 20;
tennisData.rectangleWidth = tennisData.rectangleHeight = 15;
参数 | 功能 |
---|---|
selectedImage | 设置选中状态下的图片 |
unselectedImage | 设置未选中状态下的图片 |
示例
TNImageCheckBoxData *manData = [[TNImageCheckBoxData alloc] init];
manData.identifier = @"man";
manData.labelText = @"Man";
manData.checkedImage = [UIImage imageNamed:@"checked"];
manData.uncheckedImage = [UIImage imageNamed:@"unchecked"];
创建不同数据对象后,您可以创建 TNCheckBoxGroup
的实例,并将数据对象数组和布局传入。样式可以是水平或垂直。
您还可以通过 marginBetweenItems
属性设置每个项目之间的间隔。默认为15像素。
如果您愿意,还可以设置 identifier
属性,以便有一个可读的人名组。
调用 create
方法并设置 position
属性以将组放置在特定点。不用担心边框,这将被自动计算。并将对象添加到视图层次结构中。
self.myGroup = [[TNCheckBoxGroup alloc] initWithCheckBoxData:@[manData, womanData] style:TNCheckBoxLayoutVertical];
[self.myGroup create];
self.myGroup.position = CGPointMake(25, 25);
[self addSubview:self.myGroup];
完成!
当复选框组的状态发生更改时,会广播一个 NSNotification。
您可以通过监听 GROUP_CHANGED
消息来监听。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myGroupGotUpdated:) name:GROUP_CHANGED object:self.myGroup];
每个 TNCheckBoxGroup 实例都有一个 checkedCheckBoxes
属性,这将返回一个包含所有选中复选框的数组。
每个 TNCheckBoxGroup 实例都有一个 uncheckedCheckBoxes
属性,这将返回一个包含所有未选中复选框的数组。
如果您想为特定组中的所有复选框提供相同的标签字体和颜色,可以设置 labelFont
和 labelColor
属性。
如果您想要为组中特定复选框提供不同的标签字体和/或颜色,可以在 TNCheckBox 子类上设置 labelFont
和 labelColor
属性。
如果您愿意,添加自定义复选框确实非常简单。
创建一个数据模型类,在其中存储您的复选框的特定数据。此类需要扩展 TNCheckBoxData
。
创建一个扩展 TNCheckBox
的复选框类。
重写 setup
方法(不要忘记在最后调用 super 方法)。
重写 createCheckbox
方法,在这里您可以绘制自定义复选框。
重写 checkWithAnimation:
方法以在复选框状态更改时提供自己的动画。
没有第六步。
此存储库中已添加一个演示项目,因此您可以看到它是如何工作的。
TNCheckBoxGroup 在 MIT 许可协议下发布
版权所有 (C) 2014, Frederik Jacques
在此,任何人免费获得本软件及其相关文档(以下简称“软件”)的副本,被许可在这些软件上无限制地操作,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,以及许可提供软件的人员这样做,受以下条件约束:
上述版权声明和本许可声明应包含在软件的所有副本或主要部分的副本中。
软件按“现状”提供,不提供任何形式的质量保证,包括但不限于适销性、特定用途适用性和非侵权保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他原因,因为这些索赔、损害或其他责任由软件、使用或以其他方式涉及软件引起,无论是否合理。