IOS基础-UIButton

思来想去,UIButton就是一个按钮,就是平时我们用手指点击一个控件,然后有相应的事件产生,点击的时候或许还会产生颜色上的变化,这个就叫做UIbutton

它可以显示文字,也可以显示图片,也可以动态调整内部的图片和文字,而且也可以添加属性化字符串,至于属性化字符串是什么,不懂的话没关系,后面我会讲到。

 

UIButton有三种状态:

  1. Normal(普通状态)

默认情况(default

对应的枚举常量:UIControlStateNormal

 

  1. Highlighted(高亮状态)

 按钮被按下去的时候(手指还未松开)

对应的枚举常量:UIConrolStateHighlighted

 

  1. Disabled(失效状态,不可用状态)

如果enabled属性为0 就是处于disable状态,代表按钮不可以被点击

对应的枚举常量:UIControlStateDisabled


下面就在代码里面说明UIButton的属性和方法吧

- (void)viewDidLoad {
    [super viewDidLoad];
    /*
     typedef NS_ENUM(NSInteger, UIButtonType) {
     UIButtonTypeCustom = 0,                         // 自定义风格
     UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS(7_0),  // standard system button
     UIButtonTypeDetailDisclosure,                   // 蓝色小箭头按钮,主要做详细说明用
     UIButtonTypeInfoLight,                          // 亮色感叹号
     UIButtonTypeInfoDark,                           // 暗色感叹号
     UIButtonTypeContactAdd,                         // 加号按钮
     UIButtonTypeRoundedRect = UIButtonTypeSystem,   // 系统默认  圆角矩形按钮
     };
     */
    //创建一个类型为圆角矩形的按钮,当然也是系统默认
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    
    //frame里面包含控件的坐标和宽高,这里直接设置坐标(20, 20), 宽高(100, 100)
    btn.frame = CGRectMake(20, 20, 100, 100);
    
    //设置按钮的背景颜色
    btn.backgroundColor = [UIColor greenColor];
    
    //设置按钮的渲染颜色
    btn.tintColor = [UIColor blackColor];
    
    /*
     这里设置状态,一般设置正常和高亮状态,当然也有其他状态可供选择
     UIControlStateNormal       = 0,                       // 正常状态
     UIControlStateHighlighted  = 1 << 0,                  // 高亮状态
     UIControlStateDisabled     = 1 << 1,                  // 禁用状态
     UIControlStateSelected     = 1 << 2,                  // 选中状态
     UIControlStateApplication  = 0x00FF0000,              // 当应用程序标志时
     UIControlStateReserved     = 0xFF000000               // 内部预留
     */
    //设置按钮的填充图片 正常状态下的
    [btn setImage:[UIImage imageNamed:@"2.png"] forState:UIControlStateNormal];
    //设置按钮的填充图片 高亮状态下 也就是被点击时
    [btn setImage:[UIImage imageNamed:@"1.png"] forState:UIControlStateHighlighted];
    //设置按钮上显示的文字
    [btn setTitle:@"" forState:UIControlStateNormal];
    //设置按钮上文字的颜色
    [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    //设置按钮上文字的阴影颜色
    [btn setTitleShadowColor:[UIColor blueColor] forState:UIControlStateNormal];
    //设置按钮的背景图片
    [btn setBackgroundImage:[UIImage imageNamed:@""] forState:UIControlStateNormal];
    //设置按钮的属性字符串 此处如果不懂什么叫属性字符串 可以跳过
    NSAttributedString * attrString =[[NSAttributedString alloc] initWithString:@"设置属性字符串"];
    [btn setAttributedTitle:attrString forState:UIControlStateNormal];
   //设置按钮内部图片的内间距
    //top bottom 上下   left right 左右
    //UIEdgeInsets inserts = UIEdgeInsetsMake(0, 0, 0, 0);


    //默认情况下,当按钮高亮的情况下,图像的颜色会变深一些,这里设置为no,那么会取消这个状态
    btn.adjustsImageWhenHighlighted = NO;
    //默认情况下,当按钮禁用的情况下,图形的颜色会变深一些,这里设置为no,那么会取消这个状态
    btn.adjustsImageWhenDisabled = NO;
    //当此处设置为YES时,按下按钮的时候会发光
    btn.showsTouchWhenHighlighted = YES;
    
    /*
     UIControlEventTouchDown        //单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候
     UIControlEventTouchDownRepeat  //多点触摸按下事件,点触计数大于1:用户按下第二、三、或第四根手指的时候。
     UIControlEventTouchDragInside  //当一次触摸在控件窗口内拖动时。
     UIControlEventTouchDragOutside //当一次触摸在控件窗口之外拖动时。
     UIControlEventTouchDragEnter   //当一次触摸从控件窗口之外拖动到内部时。
     UIControlEventTouchDragExit    //当一次触摸从控件窗口内部拖动到外部时。
     UIControlEventTouchUpInside    //所有在控件之内触摸抬起事件。
     UIControlEventTouchUpOutside   //所有在控件之外触摸抬起事件(点触必须开始与控件内部才会发送通知)。
     UIControlEventTouchCancel      //所有触摸取消事件,即一次触摸因为放上了太多手指而被取消,或者被上锁或者电话呼叫打断。
     UIControlEventTouchChanged     //当控件的值发生改变时,发送通知。用于滑块、分段控件、以及其他取值的控件。你可以配置滑块控件何时发送通知,在滑块被放下时发送,或者在被拖动时发送。
     UIControlEventEditingDidBegin  //当文本控件中开始编辑时发送通知。
     UIControlEventEditingChanged   //当文本控件中的文本被改变时发送通知。
     UIControlEventEditingDidEnd    //当文本控件中编辑结束时发送通知。
     UIControlEventEditingDidOnExit //当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知。
     UIControlEventAlltouchEvents   //通知所有触摸事件。
     UIControlEventAllEditingEvents //通知所有关于文本编辑的事件。
     UIControlEventAllEvents        //通知所有事件。
     */
    //给按钮增加一个点击事件
    [btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
    //删除某一种状态下的所有事件处理
    //[btn removeTarget:nil action:nil forControlEvents:UIControlEventTouchUpInside];
    
    //给按钮增加一个长按事件
    UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(btnLong:)];
    //设置按多长事件会触发长按事件
    longPress.minimumPressDuration = 1;
    //把事件添加到按钮上
    [btn addGestureRecognizer:longPress];
    
    //把按钮添加到控制器的视图上
    //注意,千万不要忘记这一步
    [self.view addSubview:btn];
}

- (void)btnClick
{
    NSLog(@"%s", __func__);
}

- (void)btnLong:(UILongPressGestureRecognizer *)gestureRecognizer
{
    if ([gestureRecognizer state] == UIGestureRecognizerStateBegan)
    {
        NSLog(@"长按事件");
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"消息" message:@"确定删除吗?" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"删除", nil];
        [alert show];
    }
}


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。