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];

IOS开发自定义CheckBox控件的更多相关文章

  1. IOS开发--自定义segment控件,方便自定义样式

    系统的segment控件太封闭,想换个颜色加个背景太难了,忍不住自己写一个,以备不时之需 这个控件给出了很多自定义属性的设置,用起来还是比较方便的,需要注意的 itemWidth如果不设置,则会按照控 ...

  2. 继续聊WPF——自定义CheckBox控件外观

    上一篇文章中谈到了BulletDecorator控件,就是为自定义CheckBox控件的模板做准备,因为CheckBox需要比较严格的布局,正好,BulletDecorator控件就合适了,该控件的布 ...

  3. iOS 开发 ZFUI framework控件,使布局更简单

    来自:http://www.jianshu.com/p/bcf86b170d9c 前言 为什么会写这个?因为在iOS开发中,界面的布局一直没有Android布局有那么多的方法和优势,我个人开发都是纯代 ...

  4. IOS开发中设置控件内容对齐方式时容易混淆的几个属性

    IOS开发中四个容易混淆的属性: 1. textAligment : 文字的水平方向的对齐方式 1> 取值 NSTextAlignmentLeft      = 0,    // 左对齐 NST ...

  5. ios开发中button控件的属性及常见问题

    最为最基本的控件,我们必须对button的每个常用属性都熟练应用: 1,使用之前,必须对按钮进行定义,为乐规范,在@interface ViewController (){}中进行定义,先定义后使用. ...

  6. iOS开发基础-UITableView控件简单介绍

     UITableView 继承自 UIScrollView ,用于实现表格数据展示,支持垂直滚动.  UITableView 需要一个数据源来显示数据,并向数据源查询一共有多少行数据以及每一行显示什么 ...

  7. iOS开发无第三方控件的援助达到的效果侧边栏

    最近的研究iOS程序侧边栏.渐渐的发现iOS该方案还开始采取风侧边栏格该,QQ,今日头条,Path(Path运营商最早的侧边栏app该,效果说成是Path效果),所以就研究了下. 然后发现Git Hu ...

  8. iOS开发中UIDatePicker控件的使用方法简介

    iOS上的选择时间日期的控件是这样的,左边是时间和日期混合,右边是单纯的日期模式. 您可以选择自己需要的模式,Time, Date,Date and Time  , Count Down Timer四 ...

  9. IOS开发之按钮控件Button详解

    reference:http://mxcvns.lofter.com/post/1d23b1a3_685d59d 首先是继承问题,UIButton继承于UIControl,而UIControl继承于U ...

随机推荐

  1. iscsi服务器的搭建

    1.在您的存储服务器上,以 root 用户身份使用 yum 命令安装 scsi-t arget -ut ils 软件包. # yum install -y scsi-target-utils 2.把您 ...

  2. 虚拟机NAT网络设置

    1. 虚拟机设置 2. 本地网络设置 3. 本地虚拟网卡设置 4. 安装虚拟机,设置网络为NAT方式即可访问外网.

  3. 部署weblogic 12c的几点收获

    最近刚编写完weblogic12c的部署脚本,这里将过程中的几点收获进行记录: 1.windows下编写的脚本在linux环境下运行需要dos2unix进行格式转换 2.weblogic安装环境检测需 ...

  4. php琐碎

    1.类中的常量,可以用类来引用: class MyClass() { const SUCCESS ="success"; const FAIL ="fail"; ...

  5. gc 调优记录

    qps 10,0000 -Xms10240m -Xmx10240m -XX:NewRatio=5 -XX:SurvivorRatio=6 2017-12-19T15:10:14.539+0800: 1 ...

  6. Linux 基础——压缩解压命令

    时间过的真快,周末不会学习Linux,每天就是下班后学习.这周工作很忙,要几天总结一次了. 一.处理数据文件 sort dest:将目标文件的内容进行排序,默认是按字符顺序排序的. sort -n d ...

  7. MIAC HW2

    MIAC的第二次作业,翻了一些fashion网站找了点灵感,重新设计了一下UI. 因为给的html里有nav之类的HTML5新特性,所以索性就不管IE的兼容了.chrome下的效果: FF下也差不多. ...

  8. 【严蔚敏】【数据结构题集(C语言版)】1.17 求k阶斐波那契序列的第m项值的函数算法

    已知k阶斐波那契序列的定义为 f(0)=0,f(1)=0,...f(k-2)=0,f(k-1)=1; f(n)=f(n-1)+f(n-2)+...+f(n-k),n=k,k+1,... 试编写求k阶斐 ...

  9. 转:Heap spraying high addresses in 32-bit Chrome/Firefox on 64-bit Windows

    转:https://blog.skylined.nl/20160622001.html,June 22nd, 2016 In my previous blog post I wrote about m ...

  10. 使用afl-dyninst fuzz无源码的二进制程序

    转:http://ele7enxxh.com/Use-AFL-dyninst-To-Fuzz-Blackbox-Binaries.html 使用afl-dyninst fuzz无源码的二进制程序 通常 ...