Button的设置及各种属性
(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的类,然后对这个类进⾏重写函数,相当于定制,最后⽤这个类去创建按钮,这些按钮也就具有⾃定义的样式(这种⽅法只针对⾃定义按钮类型有效)。
1 - (void)viewDidLoad {
2//⽣成⼀个btn1对象,不需要alloc和init,⽽是直接⽤内置的⼯⼚⽅法,有很多可CMD+点击查看
3 UIButton *btn1=[UIButton buttonWithType:UIButtonTypeRoundedRect];
4//设置位置和宽⾼
5 btn1.frame=CGRectMake(30, 30, 300, 30);
微信头像卡通男生6//设置按钮的⽂字,状态有好⼏种常⽤的时Normal和Highlighted(点击时状态),可CMD+点击查看
7 [btn1 tTitle:@"点我啊!" forState:UIControlStateNormal];
8//设置点击时的⽂本
9 [btn1 tTitle:@"我被点了!" forState:UIControlStateHighlighted];
10//设置⽂字颜⾊
11 [btn1 tTitleColor:[UIColor greenColor] forState:UIControlStateNormal];
水晶肘子12 [btn1 tTitleColor:[UIColor yellowColor] forState:UIControlStateHighlighted];
13//设置点击时按钮背景颜⾊,呃,完全不起作⽤,即⽆效果
14 [btn1 tTintColor:[UIColor purpleColor]];
15//点击时按钮发光,就是在按钮中间发亮光,这个有效果
11月22日是什么星座16 btn1.showsTouchWhenHighlighted=YES;
17//设置tag标签,唯⼀标记⽤,可⽤于分辨是哪个按钮控件
英语论文18 btn1.tag=1;
19//设置背景颜⾊
20 btn1.backgroundColor=[UIColor redColor];
21//现在⾼版本的iOS⾥这个⽅法会让⼈抓狂,因为我们发现,不设置背景时,圆⾓按钮没有边框,所以上⾯设置frame其实意义不⼤
头发干燥怎么办22//设置了背景或者图⽚后,背景是矩形,说好的圆⾓呢?坑爹呢!
23//所以现在⼤多数开发都是⽤UIButtonTypeCustom,⽽不是UIButtonTypeRoundedRect
24
25//最重要的添加触发事件⽤户交互
26//lf是指调⽤哪个对象的⽅法
27//btnClick:是调⽤的⽅法,btnClick和btnClick:不⼀样,后者表⽰有参数
28//UIControlEventTouchUpInside是触发事件,有很多,可以CMD+点击查看
29//这⾥三个参数都可以随意更换,⽐如新建⼀个类Hi,在类⾥定义⼀个⽅法-(void)report;
30//然后在此⽂件引⼊Hi.h头⽂件,在这⾥实例化⼀个对象hi1,然后就可以⽤hi1代替lf,⽤report代替btnClick
31//意思就是点击后调⽤的是hi1对象⾥⾯的report⽅法
32 [btn1 addTarget:lf action:@lector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
33
中旭教育
34//再增加⼀个按钮
35 UIButton *btn2=[UIButton buttonWithType:UIButtonTypeContactAdd];
36 btn2.frame=CGRectMake(30, 80, 300, 30);
37//这个增加联系⼈按钮其实也是⼀个矩形,和上⾯的⼀样,都是继承⾃UIControl,⽽后者⼜继承⾃UIView,所以是矩形
38//虽然按钮就⼀点点⼤,但点击整个矩形区域都是相当于点击按钮
39 btn2.backgroundColor=[UIColor greenColor];
40//设置标签
41 btn2.tag=2;
42//增加事件:和btn1调⽤同⼀个⽅法,但问题是我们如果需要区分是哪个按钮的话,就需要⽤到tag,并且把控件作为参数传递给btnClick
43 [btn2 addTarget:lf action:@lector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
44
45//再增加⼀个最常⽤的Custom按钮,其他按钮⾃⼰尝试
46 UIButton *btn3=[UIButton buttonWithType:UIButtonTypeCustom];
47 btn3.frame=CGRectMake(30 , 150 , 300, 90);
48 btn3.backgroundColor=[UIColor redColor];
49 btn3.tag=3;
50 [btn3 addTarget:lf action:@lector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
51//设置图⽚背景被点击时变暗(但没有图⽚背景时则⽆效果)
52 btn3.adjustsImageWhenHighlighted=YES;
53//所以,增加图⽚⽅式之⼀是增加背景图⽚,这个图⽚如⼩会被放⼤充满整个背景
54 [btn3 tBackgroundImage:[UIImage imageNamed:@"logo.png"] forState:UIControlStateNormal];
55//还有⼀种增加图⽚的⽅式,是在按钮上⾯加⽽不是背景,这种⽅式不会缩放图⽚,⽽且会居中
56 [btn3 tImage:[UIImage imageNamed:@"logo.png"] forState:UIControlStateNormal];
57//设置按钮⽂字,增加的⽂字会和tImage图⽚⼀并居中,图⽚在左边,⽂字紧随其后
58 [btn3 tTitle:@"⾃定义按钮" forState:UIControlStateNormal];
59//如果需要重新排版这个图⽚和按钮⽂字的位置,则需要重写UIButton类⾥⾯的两个函数,点击UIButton可查看
60//- (CGRect)titleRectForContentRect:(CGRect)contentRect;⽂字相对于按钮的位置
61//- (CGRect)imageRectForContentRect:(CGRect)contentRect;图⽚相对于按钮的位置
62//第⼀步:可以重新定义⼀个UIButton类叫myButton,在.m⾥重写如下函数
63//- (CGRect)titleRectForContentRect:(CGRect)contentRect{
64// return CGRectMake(50, 25, 100, 40);
65//}
66//- (CGRect)imageRectForContentRect:(CGRect)contentRect{
67// return CGRectMake(150, 25, 40, 40);
68//}
69//第⼆步,在这个⽂件中引⼊myButton.h头⽂件,然后实例化btn3的时候,⽤myButton,⽽不⽤原始的UIButton 70//myButton相当于稍微定制了⼀下原⽣的UIButton,所以前者实例出得对象也就具有定制效果
71//这种⽅式仅对UIButtonTypeCustom有效,其他⽆效
72
73//把三个按钮显⽰出来
74 [lf.view addSubview:btn1];
75 [lf.view addSubview:btn2];
76 [lf.view addSubview:btn3];
77 [super viewDidLoad];
提高销售的10种方法
78// Do any additional tup after loading the view, typically from a nib.
79 }
80//增加⼀个参数,即由原先的-(void)btnClick{}变成如下
自省作文
81//因为我们知道这⾥都是按钮对象,所以可以⽤(UIButton *)nder,但通常我们⽤通⽤指针id
82 -(void)btnClick:(id)nder{
83//把传递过来的控件参数转化成按钮
84 UIButton *btn=(UIButton *)nder;
85//把btn.tag转化成整型
86 NSLog(@"OMG,it is %i",(int)btn.tag);
87 }