IOS開發(fā)自定義CheckBox控件

字號:


    IOS本身沒有系統(tǒng)的CheckBox組件,但是實際開發(fā)中會經常用到,所以專門寫了一個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];