您可以使用 TNRadioButtonGroup 类来使用一些预构建的单选按钮,或者您也可以非常容易地扩展它以适应您的设计。每个单选按钮都有一个选中动画。当文本长度超过可用空间时,它将自动将文本换行到多行。
当前版本支持 3 种不同的单选按钮
圆形单选按钮
方形单选按钮
自定义图片单选按钮
导入 TNRadioButtonGroup.h
文件。
为您的单选按钮组中的每个选项创建数据对象。您可以使用以下数据对象:TNCircularRadioButtonData
,TNRectangularRadioButtonData
,TNImageRadioButtonData
。
每个数据对象都扩展了 TNRadioButtonData
,但具有您可以设置的特定属性。
您可以为每个数据对象设置以下属性
属性 | 做什么 |
---|---|
identifier | 为单选按钮设置一个供人类阅读的名称 |
labelText | 设置标签文本 |
selected | 设置选中状态 |
labelFont | 设置标签的字体 |
labelColor | 设置标签的颜色 |
不同类具有以下额外的属性
参数 | 做什么 |
---|---|
borderColor | 设置外圆的边框颜色 |
circleColor | 设置内圆的颜色 |
borderRadius | 设置外圆的半径 |
circleRadius | 设置内圆的颜色 |
示例
TNCircularRadioButtonData *maleData = [TNCircularRadioButtonData new];
maleData.labelText = @"Male";
maleData.identifier = @"male";
maleData.selected = YES;
maleData.borderColor = [UIColor blackColor];
maleData.circleColor = [UIColor blackColor];
maleData.borderRadius = 12;
maleData.circleRadius = 5;
参数 | 做什么 |
---|---|
borderColor | 设置外矩形的边框颜色 |
rectangleColor | 设置内矩形的颜色 |
borderWidth | 设置外矩形的宽度 |
borderHeight | 设置外矩形的高度 |
rectangleWidth | 设置内矩形的宽度 |
rectangleHeight | 设置内矩形的高度 |
示例
TNRectangularRadioButtonData *snowboardData = [TNRectangularRadioButtonData new];
snowboardData.labelText = @"Snowboarding";
snowboardData.identifier = @"snowboarding";
snowboardData.selected = NO;
snowboardData.borderColor = [UIColor blackColor];
snowboardData.rectangleColor = [UIColor blackColor];
snowboardData.borderWidth = snowboardData.borderHeight = 12;
snowboardData.rectangleWidth = snowboardData.rectangleHeight = 5;
参数 | 做什么 |
---|---|
selectedImage | 设置选中状态下的图片 |
unselectedImage | 设置未选中状态下的图片 |
示例
TNImageRadioButtonData *coldData = [TNImageRadioButtonData new];
coldData.labelText = @"Hot";
coldData.identifier = @"hot";
coldData.selected = YES;
coldData.unselectedImage = [UIImage imageNamed:@"unchecked"];
coldData.selectedImage = [UIImage imageNamed:@"checked"];
创建了不同的数据对象后,可以创建一个 TNRadioButtonGroup
实例,并将包含这些数据对象的数组传递给它,设置布局。布局可以是水平或垂直。
您还可以通过 marginBetweenItems
属性设置每个项目之间的间距。默认设置为 15 像素。
如果您愿意,还可以设置 identifier
属性,为该组提供一个可读的名称。
调用 create
方法,并将 position
属性设置为将组放置在特定位置。不用担心框架,这将自动计算。然后将对象添加到视图层次结构。
self.myGroup = [[TNRadioButtonGroup alloc] initWithRadioButtonData:@[data1, data2, data3] style:TNRadioButtonGroupStyleHorizontal];
self.myGroup.identifier = @"My group";
[self.myGroup create];
self.myGroup.position = CGPointMake(15, 50);
[self addSubview:self.myGroup];
完成!
当单选按钮组的状态改变时,会发出一个 NSNotification。
您可以监听 SELECTED_RADIO_BUTTON_CHANGED
消息。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myGroupGotUpdated:) name:SELECTED_RADIO_BUTTON_CHANGED object:self.myGroup];
如果您想为特定组中的所有单选按钮提供相同的标签字体和颜色,可以设置 labelFont
和 labelColor
属性。
如果您想为组中某些特定的单选按钮提供不同的标签字体和/或颜色,可以在 TNRadioButton 子类上设置 labelFont
和 labelColor
属性。
如果您想添加自定义单选按钮,这非常简单。
创建一个数据模型类,其中您存储复选框的特定数据。此类需要扩展 TNRadioButtonData
。
创建一个扩展 TNRadioButton
的单选按钮类。
重写 setup
方法(别忘了调用 super 方法)。
重写 createRadioButton
方法,在这里您可以绘制自定义单选按钮。
重写 checkWithAnimation:
方法,在单选按钮状态改变时提供您自己的动画。
第 6 步不存在。
此仓库已添加演示项目,您可以看到它是如何工作的。
TNRadioButtonGroup 在 MIT 许可下发布
版权(C)2014,Frederik Jacques
以下是在以下条件下,免费地向任何获得本软件及其相关文档文件(以下简称“软件”)的副本的人授权的:
软件授予的使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向软件供应方获得该软件的人进行上述操作:
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、适用于特定目的和非侵权的保证。在任何情况下,作者或版权所有者都不应对任何索赔、损害或其他责任(无论是否由于合同、侵权或其他行为而产生),对软件或其使用或其他交易产生或与之相关的任何索赔、损害或责任。