码迷,mamicode.com
首页 > 移动开发 > 详细

iOS UIButton的使用详解

时间:2015-01-14 21:18:43      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

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的使用详解

标签:

原文地址:http://www.cnblogs.com/wisdom-yao/p/4224746.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!