博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
勾选框
阅读量:6502 次
发布时间:2019-06-24

本文共 3502 字,大约阅读时间需要 11 分钟。

hot3.png

#import 
@interface VCRoot : UIViewController@end#import "VCRoot.h"#import "ChechBox.h"@interface VCRoot ()@end@implementation VCRoot- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];    if (self) {        // Custom initialization    }    return self;}- (void)viewDidLoad{    [super viewDidLoad];    //创建选择控件    ChechBox* checkBox = [[ChechBox alloc] initWithFrame:CGRectMake(100, 100, 30, 30)] ;    //只显示父亲视图有效的范围,超过父亲视图的范围,剪切掉不显示    checkBox.clipsToBounds = YES ;        checkBox.on = YES ;        [checkBox addTarget:self action:@selector(checkAct) forControlEvents:UIControlEventValueChanged] ;        [self.view addSubview:checkBox] ;}-(void) checkAct{    NSLog(@"点击选择控件!");}@end
#import 
//声明一个选择按钮//UIControl:可以响应事件的控件对象//UIControl:继承于UIView@interface ChechBox : UIControl{    //选中图片对象    UIImage* _imageSelect ;    //取消选中图片对象    UIImage* _imageNoSelect ;    //显示到视图上    UIImageView* _imageView ;    //选中状态    BOOL     _on ;        //事件目标对象,当前控件的事件函数的拥有者对象    //_target:事件函数声明实现在对象中    //通常使用试图控器对象作为此值    id       _target ;        //事件函数对象(指针)声明    //用来响应响应的事件处理    //通过外部来赋值    //实现在外部,_target对象中实现    SEL      _selector ;}//定义on属性@property (assign,nonatomic) BOOL on ;//重新定义setOn函数-(void) setOn:(BOOL)on ;//设置选中状态图片-(void) setSelectedImage:(UIImage*) image ;//设置取消状态的图片-(void) setNoSelectedImage:(UIImage*) image;//添加事件函数声明-(void) addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents ;@end#import "ChechBox.h"@implementation ChechBox- (id)initWithFrame:(CGRect)frame{    self = [super initWithFrame:frame];    if (self) {        // Initialization code                //加载图片对象        _imageSelect = [UIImage imageNamed:@"selected"] ;                _imageNoSelect = [UIImage imageNamed:@"noselected"] ;                //创建视图        _imageView = [[UIImageView alloc] initWithImage:_imageNoSelect] ;        //只能通过外部的参数设定位置        //不能设定控件的大小        _imageView.frame = CGRectMake(0, 0, 32, 32);        _target = nil ;        _selector = nil ;        _on = NO ;                [self addSubview:_imageView] ;            }    return self;}-(void) setSelectedImage:(UIImage *)image{    _imageSelect = image ;    _imageView.image = _imageNoSelect ;}-(void) setNoSelectedImage:(UIImage *)image{    _imageNoSelect = image ;    _imageView.image = _imageNoSelect ;}//添加设置事件函数-(void) addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents{//    controlEvents             == 0001100000//    UIControlEventValueChanged== 1000000000//                              == 0000000000    if ((controlEvents &UIControlEventValueChanged) != 0)    {        _target = target ;        _selector = action ;    }}-(void) setOn:(BOOL)on{    //状态改变    if (_on != on)    {        _on = on ;                if (_on == YES)        {            _imageView.image = _imageSelect ;        }        else if (_on == NO)        {            _imageView.image = _imageNoSelect ;        }        //respondsToSelector:target对象能否执行_selector函数        //功能:避免程序由于没有实现_selector,导致程序直接崩溃        //如果实现:返回值为YES        if ([_target respondsToSelector:_selector] == YES)        {            //通过target action模式执行事件函数            [_target performSelector:_selector withObject:self afterDelay:0] ;        }    }}-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{    self.on = !self.on ;}@end

162508_3MgY_2319073.png

162509_ZE1H_2319073.png

 

转载于:https://my.oschina.net/u/2319073/blog/652812

你可能感兴趣的文章
html显示服务器状态,显示服务器时间并一直显示(html代码)
查看>>
在线html代码优化,网站seo优化html代码方法
查看>>
HTML如何把输入框变成必填值,required输入框为必填项
查看>>
在html中哪一个不是链接的目标属性,HTML试题
查看>>
android otg 挂载流程,android USB OTG功能如何打开及实现
查看>>
html属性board,pin_board.html
查看>>
html定位有几种,POSITION定位有哪几种?各有什么特点?
查看>>
背锅侠逆袭之路
查看>>
演示:使用协议分析器取证IPv6的报文结构
查看>>
oracle 11gr2 rac中的4种IP解说
查看>>
为什么你找不到工作?
查看>>
20 个免费的 jQuery 的工具提示插件:
查看>>
只有在北方的中国帝国能力享受免费的商业课程:财富规划法与愿景
查看>>
汇编语言的应用
查看>>
device platform 相应的表
查看>>
php des 加密解密实例
查看>>
【Mac】Mac键盘实现Home, End, Page UP, Page DOWN
查看>>
实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求
查看>>
安德鲁斯----多媒体编程
查看>>
swift版的元组
查看>>