实现很简单,继承一个UIButton;添加一个BOLL属性ischecked;同时增加需要响应的目标和目标函数;
view sourceprint?#import
@interface BECheckBox : UIButton {
BOOL isChecked;
id target;
SEL fun;
}
@property (nonatomic,assign) BOOL isChecked;
-(IBAction) checkBoxClicked;
-(void)setTarget:(id)tar fun:(SEL )ff;
@end
在实现的同时,主要是初始化,设置内容模式为UIControlContentHorizontalAlignmentLeft;
BECheckBox实现
#import "BECheckBox.h"
@implementation BECheckBox
@synthesize isChecked;
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
// Initialization code
self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
[self setImage:[UIImage imageNamed:@"com_btn_check.png"] forState:UIControlStateNormal];
[self addTarget:self action:@selector(checkBoxClicked) forControlEvents:UIControlEventTouchUpInside];
}
return self;
}
-(void)setTarget:(id)tar fun:(SEL)ff
{
target=tar;
fun=ff;
}
-(void)setIsChecked:(BOOL)check
{
isChecked=check;
if (check) {
[self setImage:[UIImage imageNamed:@"com_btn_checked.png"] forState:UIControlStateNormal];
}
else {
[self setImage:[UIImage imageNamed:@"com_btn_check.png"] forState:UIControlStateNormal];
}
}
//响应点击事件
-(IBAction) checkBoxClicked
{
if(self.isChecked ==NO){
self.isChecked =YES;
[self setImage:[UIImage imageNamed:@"com_btn_checked.png"] forState:UIControlStateNormal];
}else{
self.isChecked =NO;
[self setImage:[UIImage imageNamed:@"com_btn_check.png"] forState:UIControlStateNormal];
}
if (target) {
if ([target respondsToSelector:fun) {
[target performSelector:fun];
}
}
}
- (void)dealloc {
target=nil;
[super dealloc];
}
@end
在使用BECheckBox, 关键是要设置他的目标和响应消息;最终效果如下:
项目源代码:/Files/jordenwu/BECheckBox.zip
分类: iphone开发技巧UI篇