(1)UIButton类继承自UIControl,而UIControl继承自UIView,因为UIView就是个矩形区域,所以UIButton实例化的对象其实都是一个矩形,虽然有各种圆角、增加联系人、信息按钮等等,给它们加个背景它们就现形成矩形了,而且它们有个frame属性,这就是设置位置和矩形框的。
(2)UIButton创建一个按钮不用实例化,也就是不用alloc和init,而是直接调用内置的几个工厂方法即可,这一点和UILabel *label1=[[UILabel alloc]init]不同,而且这些类型里面最常用的时Custom类型,因为我们可以自定义图片,以及图片和文字的位置。
(3)按钮有很多状态,正常状态Normal、被点击时状态Highlighted等等,所以可以分别对不同状态设置属性。
(4)其实按钮最重要的不是上面那些设置属性,而是按钮关联的操作是什么?即点击后发生什么,这需要一个addtarget操作函数,如果多个按钮用到同一个函数,则需要tag属性来区别是哪个按钮。
(5)要自定义按钮,一种方式是我们先自定义一个继承UIButton的类,然后对这个类进行重写函数,相当于定制,最后用这个类去创建按钮,这些按钮也就具有自定义的样式(这种方法只针对自定义按钮类型有效)。
- (void)viewDidLoad {
UIButton *btn1=[UIButton buttonWithType:UIButtonTypeRoundedRect];
btn1.frame=CGRectMake(30, 30, 300, 30);
[btn1 setTitle:@"点我啊!" forState:UIControlStateNormal];
[btn1 setTitle:@"我被点了!" forState:UIControlStateHighlighted];
[btn1 setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];
[btn1 setTitleColor:[UIColor yellowColor] forState:UIControlStateHighlighted];
[btn1 setTintColor:[UIColor purpleColor]];
btn1.showsTouchWhenHighlighted=YES;
btn1.tag=1;
btn1.backgroundColor=[UIColor redColor];
[btn1 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
UIButton *btn2=[UIButton buttonWithType:UIButtonTypeContactAdd];
btn2.frame=CGRectMake(30, 80, 300, 30);
btn2.backgroundColor=[UIColor greenColor];
btn2.tag=2;
[btn2 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
UIButton *btn3=[UIButton buttonWithType:UIButtonTypeCustom];
btn3.frame=CGRectMake(30 , 150 , 300, 90);
btn3.backgroundColor=[UIColor redColor];
btn3.tag=3;
[btn3 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
btn3.adjustsImageWhenHighlighted=YES;
[btn3 setBackgroundImage:[UIImage imageNamed:@"logo.png"] forState:UIControlStateNormal];
[btn3 setImage:[UIImage imageNamed:@"logo.png"] forState:UIControlStateNormal];
[btn3 setTitle:@"自定义按钮" forState:UIControlStateNormal];
[self.view addSubview:btn1];
[self.view addSubview:btn2];
[self.view addSubview:btn3];
[super viewDidLoad];
}
-(void)btnClick:(id)sender{
UIButton *btn=(UIButton *)sender;
NSLog(@"OMG,it is %i",(int)btn.tag);
}