一. 继承关系:

UIButton --> UIControl --> UIView


二. 什么是按钮

UIButton既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置


三. UIButton的状态

  • UIControlStateNormal : 默认状况
  • UIControlStateHighlighted : 高亮状态(按钮被按下去的时候,既为手指还未松开)
  • UIControlStateDisabled : 失效状态,不可用状态
    如果enable = NO,处于disable状态,代表按钮不可以被点击

四. 按钮的样式

Ø UIButtonTypeCustom:无类型,按钮的内容需要自定义

Ø UIButtonTypeSystem:

Ø UIButtonTypeDetailDisclosure:

Ø UIButtonTypeInfoLight:

Ø UIButtonTypeInfoDark:详情按钮

1.1. 创建按钮

UIButton *addBtn = [UIButton buttonWithType:UIButtonTypeCustom];

2. 设置按钮上的图片(按钮上的图片分状态,设置图片时必须告诉系统文字在按钮的什么状态下显示)

// 设置默认状态下的图片
[addBtn setImage:[UIImage imageNamed:@"add"] forState:UIControlStateNormal];
// 设置高亮状态下的图片
[addBtn setImage:[UIImage imageNamed:@"add_highlighted"] forState:UIControlStateHighlighted];
// 设置不可点击时的图片
[addBtn setImage:[UIImage imageNamed:@"add_disabled"] forState:UIControlStateDisabled];

3. 设置图片对齐方式

btn.imageView.contentMode = UIViewContentModeScaleAspectFit;

4. 设置背景色

btn.backgroundColor = [UIColor purpleColor];

5. 设置按钮的背景图片

[btn setBackgroundImage:[UIImage imageNamed:@"buttongreen"] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:@"buttongreen_highlighted"] forState:UIControlStateHighlighted];

6. 设置文字(按钮上的文字分状态,设置文字时必须告诉系统文字在按钮的什么状态下显示)

[btn setTitle:@"普通按钮" forState:UIControlStateNormal];
[btn setTitle:@"高亮按钮" forState:UIControlStateHighlighted];

7. 设置文字颜色

[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[btn setTitleColor:[UIColor blueColor] forState:UIControlStateHighlighted];

8. 设置文字大小

btn.titleLabel.font = [UIFont systemFontOfSize:20];

9. 设置文字的颜色

[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[btn setTitleColor:[UIColor blueColor] forState:UIControlStateHighlighted];

10. 设置文字的大小

btn.titleLabel.font = [UIFont systemFontOfSize:20];

11. 监听按钮

[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchDown];

12. 将按钮添加到View上

[self.view addSubview:btn];

13. 获取按钮上的文字

[self.addBtn titleForState:UIControlStateNormal];

14. 获得按钮的文字颜色

[self.addBtn titleColorForState:UIControlStateNormal];

15. 获得按钮内部的小图片

[self.addBtn imageForState:UIControlStateNormal];

16.获得按钮的背景图片

[self.addBtn backgroundImageForState:UIControlStateNormal];

17.内边距设置

// 设置按钮内边距
self.btn.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 10);
self.btn.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);


五. UIButton/UIImageView/UILabel的选择

uUIButton

u特点

-既能显示文字,又能显示图片(能显示2张图片,背景图片、内容图片)

-长按高亮的时候可以切换图片\文字

-直接通过addTarget...方法监听点击

uUIImageView

-能显示图片,不能直接通过addTarget...方法监听点击

uUILabel

-能显示文字,不能直接通过addTarget...方法监听点击

u选择

u仅仅是显示数据,不需要点击

-建议选择UIImageView、UILabel


u不仅显示数据,还需要监听点击

-建议选择UIButton

-其实UIImageView、UILabel也可以通过手势识别器来监听(后面课程会学)


u长按控件后,会改变显示的内容

-不用考虑了,选择UIButton(因为UIButton有highlighted这种状态)


u同时显示2张图片:背景图片、内容图片

-不用考虑了,选择UIButton