IOS本身沒有系統的CheckBox組件,但是實際開發中會經常用到,所以專門寫了一個CheckBox控制項,直接上代碼
效果圖:
UICheckBoxButton.h檔案如下:
#import
#import "Common.h"
@interface UICheckBoxButton : UIControl
{
UILabel *label;
UIImageView *icon;
BOOL checked;
id delegate;
}
@property (retain, nonatomic) id delegate;
@property (retain, nonatomic) UILabel *label;
@property (retain, nonatomic) UIImageView *icon;
-(BOOL)isChecked;
-(void)setChecked: (BOOL)flag;
@end
UICheckBoxButton.m檔案如下:
#import "UICheckBoxButton.h"
@implementation UICheckBoxButton
@synthesize label,icon,delegate;
- (id)initWithFrame:(CGRect)frame {
if ( self = [super initWithFrame: frame])
{
icon =[[UIImageView alloc] initWithFrame: CGRectMake (0, 0, frame.size.height, frame.size.height)];
[self setChecked:NO];
[self addSubview: icon];
label =[[UILabel alloc] initWithFrame: CGRectMake(icon.frame.size.width + 7, 0,
frame.size.width - icon.frame.size.width - 10,
frame.size.height)];
label.backgroundColor =[UIColor clearColor];
label.textAlignment = UITextAlignmentLeft;
[self addSubview:label];
[self addTarget:self action:@selector(clicked) forControlEvents: UIControlEventTouchUpInside];
}
return self;
}
-(BOOL)isChecked {
return checked;
}
-(void)setChecked: (BOOL)flag {
if (flag != checked)
{
checked = flag;
}
if (checked)
{
[icon setImage: [UIImage imageNamed:@"checkBoxSelect.png"]];
}
else
{
[icon setImage: [UIImage imageNamed:@"checkBoxNoSelect.png"]];
}
}
-(void)clicked {
[self setChecked: !checked];
if (delegate != nil)
{
SEL sel = NSSelectorFromString (@"checkButtonClicked");
if ([delegate respondsToSelector: sel])
{
[delegate performSelector: sel];
}
}
}
-(void)dealloc {
delegate = nil;
[label release];
[icon release];
[super dealloc];
}
@end
使用方法:
UICheckBoxButton *checkBoxButton = [[ UICheckBoxButton alloc] initWithFrame: CGRectMake(30, 50, 220, 25)];
checkBoxButton.delegate = self.delegate;
checkBoxButton.label.text = [Common getTextByTag:@"noCostPrompt"];
checkBoxButton.label.textColor = [Common getColorByTag:@"alertLabelcolor"];
[self.view addSubview:checkBoxButton];
[checkBoxButton release];