UIButton

UIButton(按钮):是响应⽤户点击的控件。侧重于处理⽤户交互 事件。
 
  • 创建UIButton与创建UILabel、UITextField、UIView的步骤很相似。
1、创建button对象(如果本类有初始化⽅法,则使⽤⾃⼰的初始化 ⽅法;否则使⽤⽗类的)。
2、设置按钮相关的属性
3、为按钮添加点击事件
4、添加按钮到⽗视图上,⽤以显⽰
5、按钮⽆需释放(⼀般情况创建UIButton都使⽤⾃⼰的便利构造器 ⽅法,⽆需释放对象的所有权)
 
//创建一个UIButton对象, UIButton侧重于交互,响应事件
   
    //如果button样式是system,那么不给定标题颜色,也能看见标题,默认为蓝色
    //如果button样式custom,那么除了给定标题内容之外,还需要给定标题文本颜色
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
//    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
    //设置frame
    button.frame = CGRectMake(100, 400, 200, 200);
   
    //设置button显示的文本(标题)
    [button setTitle:@"点这里" forState:UIControlStateNormal];
   
    //设置button的颜色
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
 
     //设置button的背景图片
    [button setBackgroundImage:[UIImage imageNamed:@"BtnOff.png"] forState:UIControlStateHighlighted];
 
             //设置button的前景图片
    [button setImage:[UIImage imageNamed:@"xigua"] forState:UIControlStateHighlighted];
 
     //点击时如果设置了图片,不出现按钮闪动的效果
    button.adjustsImageWhenHighlighted = NO;
 
     //非常关键的方法,为button添加一个事件
     //self是执行对象,click是要执行的方法 (必须实现)
    [button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
   
    [containerView addSubview:button];
 
     //设置前景图片时,使用custom样式,如果图片大小大于button的大小,那么图片会被压缩到与button等大,如果图片大小小于button的大小,那么图片保留其原有大小
    //设置背景图片时,不论使用custom还是system,图片大于或者小于button大小,都会显示的与button等大
 
点击事件 及 Normal  Highlighted  Selected  三种state的使用
 
1.什么都没干的时候:Normal
 
2.当你的手指按下去,还没放的时候:Highlighted(高亮状态)
 
3.当手指放开的时候:如果这个 UIControl 有 Selected 状态的话,就会变成: Selected(Selected默认为NO,要显示Selected状态需要在点击方法中代码实现)
 
     //不设置selected的话默认为NO,当前显示Normal、按下Button后为Highlighted状态、松开按钮变回Normal状态
//Normal->Highlighted-> Normal
    [button setImage:[UIImage imageNamed:@"BtnOff.png"] forState:UIControlStateNormal];
     [button setImage:[UIImage imageNamed:@"xigua"] forState:UIControlStateHighlighted];
 
//当前显示Normal、点击button按住不放,显示Highlighted状态、手指放开为Selected状态、再点击放开为Normal状态
    //Normal->Highlighted-> Selected-> Normal
    [btn setBackgroundImage:[UIImage imageNamed:@"check"] forState:UIControlStateNormal];
    [btn setBackgroundImage:[UIImage imageNamed:@"xigua"] forState:UIControlStateHighlighted]; //一般实现两个图片交换时不设置高亮状态,并且将高亮状态设置为NO,此处只是为了演示三种状态的结合使用
    [btn setBackgroundImage:[UIImage imageNamed:@"checked"] forState:UIControlStateSelected];
    [btn addTarget:self action:@selector(change:) forControlEvents:UIControlEventTouchUpInside];
 
//    btn.adjustsImageWhenHighlighted = NO;
 
//实现按钮背景图交换的方法,实现selected状态
- (void)change:(UIButton *)button {
    button.selected = !button.selected;
}
 
 
 
原文地址:https://www.cnblogs.com/Walking-Jin/p/5210773.html