一、按钮上是文字
1.初始化, 由于UIButton 有自己的初始化方式,所以用自己的
UIButton *button=[UIButton buttonWithType:UIButtonTypeSystem];
(后面的按钮类型是这个按钮的样子,有如下按钮类型)
// UIButtonTypeDetailDisclosure, //文字前面有圆圈,圆圈里面有i的按钮
// UIButtonTypeInfoLight, //文字前面有圆圈,圆圈里面有i的按钮
// UIButtonTypeInfoDark, //文字前面有圆圈,圆圈里面有i的按钮
// UIButtonTypeContactAdd, //文字前面有圆圈,圆圈里面有+的按钮
2.为按钮设置标题
[button setTitle:@"点我" forState:UIControlStateNormal];
(后面的是按钮的上标题的一些规定)
// UIControlStateNormal 常态 //一般模式的标题规定
// UIControlStateHighlighted 高亮 //当点击按钮时,并且不放,此标题才会显示出来
// UIControlStateDisabled //已经被禁止使用
// UIControlStateSelected 被选中 //是个BOOL类型,默认是NO, 是按钮的属性eg:
button.selected=!button.selected; 和此按钮的方法配合
使用,类似手机上的收藏键(文字四周还有框)
3.设置按钮背景颜色 就是程序运行后按钮的背景色
[button setBackgroundColor: [UIColor redColor]];
4.修改按钮上 标题的字体颜色 (默认黑色)
[button setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];
后面用selected指的是按钮被点击后 被选择标题的颜色
[button setTitleColor:[UIColor blueColor] forState:UIControlStateSelected];
下面的方法改变了工程运行后出来的按钮上的字体颜色和点击按钮后被选中的字体的背景(不是整个
按钮的背景),如果单独设置工程运行后出来的按钮上的字体的颜色,则此字体用该颜色
[button setTintColor: [UIColor redColor] ];
5.修改按钮上字体的大小
button.titleLable.font=[UIFont systemFontOfSize:20 ];
6.为按钮添加点击事件
[button addTarget: self anction: @selector(btnAction:) forControlEvents: UIControlEventTouchUpInside];
//Target:动作的执行目标,方法的执行体(就是按钮的action事件写在那个类里面)
//target-action 目标动作机制
//action:按钮的回调方法,如果方法有参数,那么这个参数一定是按钮本身,方法没有参数也可以(没有参数时可以不用写冒号)
//events:那种触摸方式会触发按钮的回调方法
下面是几种触摸方式
// UIControlEventTouchDragInside 点击不松手轻轻移动触发
// UIControlEventTouchDragOutside 点击不松手,向其他位置拖触发
// UIControlEventTouchDragEnter
// UIControlEventTouchDragExit
// UIControlEventTouchUpInside 单击:手指按下去,再松手的时候触发的(最常用点击方式)
// UIControlEventTouchUpOutside
// UIControlEventTouchCancel
// UIControlEventTouchDown 按钮点下去之后就会出触发方法,不等松手
// UIControlEventTouchDownRepeat 连击两下触发
7.按钮被点击后的触发事件 选中与被选中之间的切换
//按钮的回调方法,此方法就是触发该方法的按钮
-(void)btnAction:(UIButton *)sender
{
sender.selected=!sender.selected;
}
二、按钮上是图片
1.初始化 Custom是自定义的意思
UIButton *button=[UIButton buttonWithType: UIButtonTypeCustom];
2.为按钮添加图片
[button setImage:[UIImage imageNamed: @"shipping.jpg"]
forState:UIControlStateNormal ];
3.设置回调方法
[button addTarget: self action:@selector(customAction:) forControlEvents:
UIControlEventTouchUpInside ];
4.将按钮添加到父视图上
[self.window addSubview:button];
5.给高亮状态下托进一张图片
[button setImage:[UIImage imageNamed:@"勇者.png"] forState:UIControlStateHighlighted];
6.定义一个得到按钮的图片并显示在UIImageView上 如果图片是常态下地就装换成高亮成高亮状态
下,如果是高亮状态下地图片,就转换为常态下的图片
UIImageView *btnImageView=[[UIImageView alloc]initWithFrame:CGRectMake(100,100, 100,
100)];
btnImageView.tag=1000;
btnImageView.center=self.window.center;
[self.window addSubview:btnImageView];
7.获取常态button上的图片
[button imageForState:UIControlStateNormal];
8.获取常态button上的文字
[button titleForState:UIControlStateNormal];
9.button被点击
button.selected==YES;
10.返回上一界面
-(void)cancelAction:(UIButton *)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
}
11.方法实现
-(void)customBtnAction:(UIButton *)sender
{
NSLog(@"这是自定义按钮的回调方法");
//得到按钮的图片并显示在UIImageView上 如果图片是常态下地就装换成高亮成高亮状态下,如果是高亮状态下地图片,就转换为常态下的图片
UIImageView *imageView=(UIImageView *)[self.window viewWithTag:1000];
imageView.center=CGPointMake(self.window.center.x, 100);
//button获取它上面的图片
UIImage *btnImage=[sender imageForState:UIControlStateNormal];
imageView.image=btnImage;
//判断:按钮的状态是常态,还是高亮
if(sender.selected==YES)
{
sender.selected=NO;
UIImage *btnImage=[sender imageForState:UIControlStateNormal];
imageView.image=btnImage;
}
else
{
sender.selected=YES;
UIImage *btnImage=[sender imageForState:UIControlStateHighlighted];
imageView.image=btnImage;
}
}