首页 > 代码库 > iOS UIButton的使用详解

iOS UIButton的使用详解

button的创建方法有:

  //对象方法初始化    UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(100, 50, 100, 75)];        //类方法初始化    UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];    //设置frame    btn1.frame = CGRectMake(100, 100, 100, 75);    btn1.backgroundColor = [UIColor blackColor];//设置背景颜色    [btn1 setTitle:@"btn1" forState:UIControlStateNormal];    [self.view addSubview:btn];//添加到view上    [self.view addSubview:btn1];    //设置按钮标题    [btn setTitle:@"button" forState:UIControlStateNormal];    //设置高亮状态    [btn setTitle:@"高亮状态" forState:UIControlStateHighlighted];    //按钮的某一个状态设置为图片    [btn setImage:[UIImage imageNamed:@"pic"] forState:UIControlStateNormal];    //设置标题颜色    [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];    //阴影    [btn setTitleShadowColor:[UIColor grayColor] forState:UIControlStateNormal];    //设置背景图片    [btn setBackgroundImage:[UIImage imageNamed:@"pic"] forState:UIControlStateHighlighted];    //设置字体大小    btn.titleLabel.font = [UIFont fontWithName:@"btn" size:15];    //设置tag值    [btn setTag:101];    //设置四个圆角半径    btn.layer.cornerRadius = 4.5;    //按钮边框宽度    btn.layer.borderWidth = 0.5;

state状态

    state状态    forState: 这个参数的作用是定义按钮的文字或图片在何种状态下才会显现        enum {        UIControlStateNormal = 0, 常规状态显现        UIControlStateHighlighted = 1 << 0, 高亮状态显现        UIControlStateDisabled = 1 << 1, 禁用的状态才会显现        UIControlStateSelected = 1 << 2, 选中状态        UIControlStateApplication = 0x00FF0000, 当应用程序标志时                UIControlStateReserved = 0xFF000000 为内部框架预留,可以不管他     };
//当按钮高亮或者禁用,UIButton 类可以调整自己的外观,下面几个属性可以让你按照需要对按钮的外观进行微调:    //adjustsImageWhenHighlighted    //默认情况下,在按钮被禁用时,图像会被画的颜色深一些。要禁用此功能,请将这个属性设置为NO:    btn1.adjustsImageWhenHighlighted = NO;       // adjustsImageWhenDisabled    //默认情况下,按钮在被禁用时,图像会被画的颜色淡一些。要禁用此功能,请将这个属性设置为NO:    btn1.adjustsImageWhenDisabled = NO;       // showsTouchWhenHighlighted   // 这个属性设置为YES,可令按钮在按下时发光。这可以用于信息按钮或者有些重要的按钮:    btn1.showsTouchWhenHighlighted = YES;

重写绘制

//    重写绘制行为//    //    你可以通过子类化按钮来定制属于你自己的按钮类。在子类化的时候你可以重载下面这些方法,这些方法返回CGRect结构,指明了按钮每一组成部分的边界。//    注意:不要直接调用这些方法, 这些方法是你写给系统调用的。    //    backgroundRectForBounds   //指定背景边界//    contentRectForBounds         // 指定内容边界//    titleRectForContentRect       // 指定文字标题边界//    imageRectForContentRect   //指定按钮图像边界
- (CGRect)imageRectForContentRect:(CGRect)bounds{    return CGRectMake(0.0, 0.0, 44, 44);}[btn1 addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];//添加点击按钮事件-(void)btnPressed:(id)sender{    UIButton* btn = (UIButton*)sender;    //开始写你自己的动作}
 //forControlEvents参数类型    typedef NS_OPTIONS(NSUInteger, UIControlEvents)    {        UIControlEventTouchDown                 = 1 <<  0,      // 单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候。        UIControlEventTouchDownRepeat      = 1 <<  1,      // 多点触摸按下事件,点触计数大于1:用户按下第二、三、或第四根手指的时候。        UIControlEventTouchDragInside         = 1 <<  2,      // 当一次触摸在控件窗口内拖动时。        UIControlEventTouchDragOutside       = 1 <<  3,      // 当一次触摸在控件窗口之外拖动时。        UIControlEventTouchDragEnter           = 1 <<  4,      // 当一次触摸从控件窗口之外拖动到内部时        UIControlEventTouchDragExit             = 1 <<  5,      // 当一次触摸从控件窗口内部拖动到外部时。        UIControlEventTouchUpInside            = 1 <<  6,      // 所有在控件之内触摸抬起事件        UIControlEventTouchUpOutside          = 1 <<  7,      // 所有在控件之外触摸抬起事件(点触必须开始与控件内部才会发送通知)。        UIControlEventTouchCancel                = 1 <<  8,      //所有触摸取消事件,即一次触摸因为放上了太多手指而被取消,或者被上锁或者电话呼叫打断。                UIControlEventValueChanged             = 1 << 12,     // 当控件的值发生改变时,发送通知。用于滑块、分段控件、以及其他取值的控件。你可以配置滑块控件何时发送通知,在滑块被放下时发送,或者在被拖动时发送。                UIControlEventEditingDidBegin           = 1 << 16,     // 当文本控件中开始编辑时发送通知        UIControlEventEditingChanged           = 1 << 17,     // 当文本控件中的文本被改变时发送通知。        UIControlEventEditingDidEnd              = 1 << 18,     // 当文本控件中编辑结束时发送通知。        UIControlEventEditingDidEndOnExit    = 1 << 19,     // 当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知。                UIControlEventAllTouchEvents             = 0x00000FFF,  // 通知所有触摸事件。        UIControlEventAllEditingEvents           = 0x000F0000,  // 通知所有关于文本编辑的事件。        UIControlEventApplicationReserved    = 0x0F000000,  // range available for application use        UIControlEventSystemReserved          = 0xF0000000,  // range reserved for internal framework use        UIControlEventAllEvents                      = 0xFFFFFFFF   // 通知所有事件

 

iOS UIButton的使用详解