您可以使用 TNCheckBoxGroup 类使用一些预建复选框,或者可以轻松扩展以适应您自己的设计。每个复选框都有一个选中动画。当文字长度超过可用空间时,它将自动换行到多行。
当前版本支持 3 种不同的复选框
圆形复选框
方形复选框
自定义图片复选框
src
文件夹中的文件拖到您的项目中。导入 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;
参数 | 它做什么 |
---|---|
已选图片 | 设置选中状态下的图片 |
未选中图片 | 设置未选中状态下的图片 |
示例
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
方法(不要忘记在最后调用超类方法)。
重写createCheckbox
方法,在这里您可以绘制您自己的自定义复选框。
重写checkWithAnimation:
方法以在复选框状态改变时提供您自己的动画。
没有第六步。
此存储库已添加了一个演示项目,因此您可以看到它的工作原理。
TNCheckBoxGroup在MIT许可下发布
版权(C)2014,Frederik Jacques
特此授予任何人未经限制使用、复制、修改、合并、发布、分发、再许可和/或销售软件及其相关文档副本(“软件”),并允许将软件提供给他人使用,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按照“现状”提供,不提供任何形式的保证,无论是明示的还是暗示的,包括但不限于适销性、适用于特定目的和不侵权保证。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任负责,无论是基于合同行为、侵权或其他原因,这些索赔、损害或其他责任源于、产生于或与软件或其使用或在任何其他方式中软件相关。