1. 创建一个按钮
-(void)createUIRectButton{
//创建一个button对象,根据类型创建button,圆角类型的button
//通过类方法来创建buttonWithType:类名+方法名
//button不能通过alloc init来分配内存,button的内存是自己管理的
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
//设置button按钮的位置
btn.frame = CGRectMake(100, 100, 100, 40);
//设置按钮的文字内容
//@parameter
//P1:字符串类型,显示到按钮上的文字
//P2:设置文字显示的状态类型:UIControlStateNormal正常状态 UIControlStateHighlighted按下状态
[btn setTitle:@"button1" forState:UIControlStateNormal];
[btn setTitle:@"button pressed" forState:UIControlStateHighlighted];
//设置按下状态的颜色
btn.backgroundColor = [UIColor grayColor];
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[btn setTitleColor:[UIColor orangeColor] forState:UIControlStateHighlighted];
//设置按钮的风格颜色,优先级低于titleColor
[btn setTintColor:[UIColor whiteColor]];
//修改字体,titleLabel:UILabel控件
btn.titleLabel.font = [UIFont systemFontOfSize:18];
[self.view addSubview:btn];
}
2. 创建一个可以显示图片的按钮
-(void)createImageBtn{
//创建一个自定义类型的button
UIButton *btnImage = [UIButton buttonWithType:UIButtonTypeCustom];
btnImage.frame = CGRectMake(100, 200, 100, 100);
UIImage *icon01 = [UIImage imageNamed:@"icon01"];
UIImage *icon02 = [UIImage imageNamed:@"icon02"];
// NSLog(@"jajajajjaaa");
// btnImage.backgroundColor =[UIColor grayColor];
[btnImage setImage:icon01 forState:UIControlStateNormal];
[btnImage setImage:icon02 forState:UIControlStateHighlighted];
[self.view addSubview:btnImage];
}
如果图片显示不了,一般是资源没有引用进来。
解决方案有两种:
- 如果直接拖动到工程文件夹下,直接调用会找不到资源文件,需要点击工程名,在Build Phases中的Copy Bundle Resources中再添加一次图片,才能引用成功。且引用时需要写资源文件的后缀名!
- 如果用Assets.xcassets统一管理的话,添加图片文件到其中,并重新命名,就可以直接以该名称引用图片。
现在一般使用第二种。
3. 为按钮添加事件
-(void)createBtn{
//创建一个圆角按钮
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(100, 100, 80, 40);
[btn setTitle:@"按钮" forState: UIControlStateNormal];
//向按钮添加事件函数
//P1:实现事件函数的对象
//P2:函数对象,当按钮满足P3事件类型时,调用函数
//P3:事件处理函数类型
//UIControlEventTouchUpInside:当手指离开屏幕并且手指位置在按钮范围内触发事件函数
//UIControlEventTouchUpOutside:手指位置在按钮范围外
[btn addTarget:self action:@selector(pressBtn:) forControlEvents:UIControlEventTouchUpInside];
[btn addTarget:self action:@selector(pressBtn) forControlEvents:UIControlEventTouchUpOutside];
//触碰时调用事件函数
[btn addTarget:self action:@selector(touchBtn) forControlEvents:UIControlEventTouchDown];
//可以多个按钮使用同一个函数处理
UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn2.frame = CGRectMake(100, 300, 50, 40);
[btn2 setTitle:@"按钮2" forState:UIControlStateNormal];
[btn2 addTarget:self action:@selector(pressBtn:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
[self.view addSubview:btn2];
//为按钮设置标记值
btn.tag = 101;
btn2.tag = 102;
}
-(void)pressBtn{
NSLog(@"按钮被按下");
}
//参数为调用此函数的按钮对象本身
-(void)pressBtn:(UIButton *)btn{
if(btn.tag == 101){
NSLog(@"按钮1被触发");
}
else
NSLog(@"按钮2被触发");
}
-(void)touchBtn{
NSLog(@"touch once");
}
- (void)viewDidLoad {
[super viewDidLoad];
// [self createUIRectButton];
[self createImageBtn];
[self createBtn];
}