iOS开发之通过代码自定义一个控件
关于控件的继承关系(面试重点):
(1)所有的控件都继承自UIView。
(2)能监听事件的都是先继承自UIControl,UIControl再继承自UIView。比如UIButton。
(3)能整体滑动的都是继承自UIScrollView,UIScrollView再继承自UIView。比如UITableView。
(4)UIWindow也是继承自UIView。
首先,创建控件的代码要写在
- (void)viewDidLoad{
};
中,这个方法是在view被创建完毕后执行的方法。
1、创建按钮
UIButton *btn = [[UIButton alloc] init];
2、将按钮添加到view中
[self.view addSubview:btn];
3、设置frame(设置控件的位置和大小)
btn.frame = CGRectMake(50, 50, 100, 100);
4、设置背景图片
(1)通过文件名加载图片(凡是PNG图片,都不用加拓展名)
UIImage *normal = [UIImage imageNamed:@"btn_01"];
(2)设置普通状态下的背景图片
[btn setBackgroundImage:normal forState:UIControlStateNormal];
(3)加载高亮的图片
UIImage *high = [UIImage imageNamed:@"btn_02"];
[btn setBackgroundImage:high forState:UIControlStateHighlighted];
5、设置文字
[btn setTitle:@"点我啊" forState:UIControlStateNormal];
[btn setTitle:@"摸我干啥" forState:UIControlStateHighlighted];
6、设置文字颜色
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[btn setTitleColor:[UIColor blueColor] forState:
UIControlStateHighlighted];
7、监听按钮点击
[btn addTarget:self action:@selector(btnClick:) forControlEvents:
UIControlEventTouchUpInside];
【备注】*可以通过tag找到一个控件,例如:
UIButton *button = (UIButton *)[self.view viewWithTag:10];
由于[self.view viewWithTag:10]的返回值为UIView所以需要加上(UIButton *)强制转换为UIButton。
*对于监听按钮点击
[btn addTarget:self action:@selector(btnClick:) forControlEvents:
UIControlEventTouchUpInside];
addTarget的参数代表哪一个view,action代表这个view中的哪个方法。