IOS——模仿Android界面实现单选框UICheckBoxButton
来源:互联网 发布:一个爱心的软件 编辑:程序博客网 时间:2024/06/05 19:30
首先要吐槽一下,IOS好好的Switch不用,非得要模仿Android搞一个单选框什么的最讨厌了啊啊啊啊啊啊啊啊~!!!!!
好吧,现在开始,实现自定义的模仿Android单选框的类命名为UICheckBoxButton,继承于UIControl
该UICheckbox功能:
1. 自定义选项的名字
2. 自定义选项框的大小(定义高度,因为选项框为正方形)
3. 自定义选项框的长度
4. 监听选项框的点击事件
上代码:
1. UICheckBoxButton.h
#import <UIKit/UIKit.h>@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有两张,一张是选中的图片,另一张是没选中的图片。
这里贴上我自制的图片
3. 使用UICheckBoxButton
首先,
#import "UICheckBoxButton.h"
然后实现代码:
dirveCheckbox=[[UICheckBoxButtonalloc]initWithContent:@"Test"];//初始化checkbox的名称
[dirveCheckboxsetOffsetFrame:CGRectMake(10,230,120,28)];//初始化checkbox的位置,其中120为长度,28为高度
[dirveCheckboxaddTarget:selfaction:@selector(CheckBoxClicked:)forControlEvents:UIControlEventValueChanged];//给予checkbox点击事件监听
checkbox点击事件的监听方法:
-(void)CheckBoxClicked:(UICheckBoxButton *)checkbox{
NSLog(@"click check box");
}
呼呼,完成!
- IOS——模仿Android界面实现单选框UICheckBoxButton
- Android中模仿微信发消息界面实现
- Android 模仿微信主界面
- 【Android界面实现】模仿淘宝客户端倒计时控件
- Android学习之微信界面的模仿实现
- 初识Android二之小试牛刀模仿实现qq登陆界面
- iOS开发UI高级—43模仿ipad版QQ空间登录界面
- iOS开发UI篇—模仿ipad版QQ空间登录界面
- IOS—使用Storyboard实现复杂界面
- 模仿微信的界面实现
- 模仿qq界面实现(WTL)
- Android模仿IOS中的UIActionSheet
- [模仿Android微信]之主界面
- 模仿酷狗7(Kugou7)界面——Java版
- Qt 之 模仿 QQ登陆界面——样式篇
- Qt 之 模仿 QQ登陆界面——样式篇
- Qt 之 模仿 QQ登陆界面——样式篇
- iOS项目模仿之喜马拉雅(二)—— TabBar实现
- 如何学习软件工程
- How to Identify Slow Running Queries with SQL Profiler
- 关于《蓝牙控制台》的下位机程序(51版)
- js导航栏单击事件背景变换示例代码
- uboot使用
- IOS——模仿Android界面实现单选框UICheckBoxButton
- 真机测试
- Web app root system property already set to different value
- chrome 沙箱
- 使用Maven配置JBoss、Wildfly数据源的方法
- 编程之美 2.4 1的数目
- DLNA简介
- 第十四周项目四之电子词典
- 上传文件之至客户端处理http请求