android 单选框 icon,IOS——模仿Android界面实现单选框UICheckBoxButton

这篇博客介绍了如何在iOS中创建一个名为UICheckBoxButton的自定义控件,该控件模仿了Android的单选框功能。控件允许设置选项名、大小和图片,并能监听点击事件。作者提供了详细的代码实现,包括头文件(UICheckBoxButton.h)和实现文件(UICheckBoxButton.m),以及如何在项目中使用这个自定义控件的方法。
摘要由CSDN通过智能技术生成

首先要吐槽一下,IOS好好的Switch不用,非得要模仿Android搞一个单选框什么的最讨厌了啊啊啊啊啊啊啊啊~!!!!!

好吧,现在开始,实现自定义的模仿Android单选框的类命名为UICheckBoxButton,继承于UIControl

该UICheckbox功能:

1. 自定义选项的名字

2. 自定义选项框的大小(定义高度,因为选项框为正方形)

3. 自定义选项框的长度

4. 监听选项框的点击事件

上代码:

1. UICheckBoxButton.h

#import @interface UICheckBoxButton : UIControl{ NSString *checkedImage; NSString *uncheckedImage; UIImageView *backgroundImage; UILabel *titleLabel; BOOL isChecked; id delegate; } @property (retain, nonatomic) UIImageView *backgroundImage; @property (retain, nonatomic) UILabel *titleLabel; @property (retain, nonatomic) id delegate; - (id)initWithContent:(NSString *)titleName; - (void)setOffsetFrame:(CGRect)frame; - (BOOL)getChekced; @end

2. UICheckBoxButton.m

#import "UICheckBoxButton.h" @implementation UICheckBoxButton @synthesize backgroundImage; @synthesize titleLabel; @synthesize delegate; - (id)initWithContent:(NSString *)titleName { self = [super init]; [self setBackgroundColor:[UIColor clearColor]]; [self initImages]; titleLabel = [[UILabel alloc] init]; [titleLabel setText:titleName]; [titleLabel setFont:[UIFont systemFontOfSize:14]]; [titleLabel setTextColor:[UIColor whiteColor]]; [titleLabel setBackgroundColor:[UIColor clearColor]]; backgroundImage = [[UIImageView alloc] init]; isChecked = NO; [backgroundImage setImage:[UIImage imageNamed:uncheckedImage]]; [self addSubview:backgroundImage]; [self addSubview:titleLabel]; [self addTarget:self action:@selector(clickEvent) forControlEvents:UIControlEventTouchUpInside]; return self; } - (void)initImages { checkedImage = @"checkedIcon.png"; uncheckedImage = @"uncheckedIcon.png"; } - (void)setOffsetFrame:(CGRect)frame { CGSize frameSize; frameSize.width = frame.size.width; frameSize.height = frame.size.height; [super setFrame:CGRectMake(frame.origin.x, frame.origin.y, frameSize.width, frameSize.height)]; CGRect iconFrame; iconFrame.size = CGSizeMake(frameSize.height,frameSize.height); iconFrame.origin.x = 0; iconFrame.origin.y = 0; [backgroundImage setFrame:iconFrame]; CGRect lbFrame; lbFrame.size = CGSizeMake(frameSize.width, frameSize.height); lbFrame.origin.x = frame.size.height+5; lbFrame.origin.y = 0; [titleLabel setFrame:lbFrame]; } - (void)clickEvent { if (isChecked) { isChecked=NO; [backgroundImage setImage:[UIImage imageNamed:uncheckedImage]]; } else { isChecked=YES; [backgroundImage setImage:[UIImage imageNamed:checkedImage]]; } [self sendActionsForControlEvents:UIControlEventValueChanged]; } -(BOOL)getChekced{ return isChecked; } @end

注意,image有两张,一张是选中的图片,另一张是没选中的图片。

这里贴上我自制的图片

2a63b04ce6f995bf5ce6c2918e380d0f.png

f7d8fa0652ccceae39f98c8c02f1101d.png

3. 使用UICheckBoxButton

首先,

#import"UICheckBoxButton.h"

然后实现代码:

dirveCheckbox=[[UICheckBoxButtonalloc]initWithContent:@"Test"];//初始化checkbox的名称

[dirveCheckbox setOffsetFrame:CGRectMake(10,230,120,28)];//初始化checkbox的位置,其中120为长度,28为高度

[dirveCheckboxaddTarget:selfaction:@selector(CheckBoxClicked:)forControlEvents:UIControlEventValueChanged];//给予checkbox点击事件监听

checkbox点击事件的监听方法:

-(void)CheckBoxClicked:(UICheckBoxButton *)checkbox{

NSLog(@"click check box");

}

呼呼,完成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值