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   // 通知所有事件
				
时间: 2024-12-09 21:49:41

iOS UIButton的使用详解的相关文章

iOS:UIButton按钮的详解

UIButton的详细介绍: 一.按钮具有的属性: @property(nonatomic,readonly) UIButtonType buttonType;  //按钮形状类型 @property(nonatomic,readonly,retain) NSString *currentTitle;    //按钮当前文字 @property(nonatomic,readonly,retain) UIColor  *currentTitleColor;     //按钮当前文字颜色 @prop

iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController

1.RootView 跳到SecondView 首先我们需要新一个View.新建SecondView,按住Command键然后按N,弹出新建页面,我们新建SecondView 2.为Button 添加点击事件,实现跳转 在RootViewController.xib中和RootViewController.h文件建立连接 在RootViewController.m中实现代码,alloc一个SecondViewController,用pushViewController到navigationCon

[转]iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController

转载地址:http://blog.csdn.net/totogo2010/article/details/7682433 iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem是上篇,我们接着讲UINavigationController的重要作用,页面的管理和切换. 1.RootView 跳到SecondView 首先我们需要新一个View.新建SecondView,按住Command键然后按N,弹出新建页面,我们新建SecondView 2

IOS 友盟使用详解

IOS 友盟使用详解 这篇博客将会详细介绍友盟的使用,希望对博友们有所帮助. 首先我们在浏览器上搜索友盟. 在这里我们选择官网这个,进去友盟官网后我们按照下图进行选择. 接下来选择如下图 Next 这样我们便进入到了帮助文档 如果还没有友盟账号那么我们就需要注册一下了(点击图片中的注册即可) 注册成功并且登陆后我们需要按照操作获取Appkey 操作如图 NEXT 成功获取Appkey(复制下来,接下来会用到) 返回帮助文档 接下来是下载(安装)SDK,我么可以按照图片中的两种方法操作. 我选择了

ios新特征 ARC详解

IOS ARC 分类: IOS ARC2013-01-17 09:16 2069人阅读 评论(0) 收藏 举报 目录(?)[+] 关闭工程的ARC(Automatic Reference Counting) 顺带附上ARC教程 本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和讨论.请不要将本文的部分或全部内容用于商用,谢谢合作. 欢迎转载本文,但是转载请注明本文出处:http://www.onevcat.com/2012/06/arc-hand-by

iOS定位服务编程详解

现在的移动设备很多都提供定位服务,使用iOS系统的iPhone.iPod Touch和iPad都可以提供位置服务,iOS设备能提供3种不同途径进行定位:Wifi, 蜂窝式移动电话基站, GPS卫星 iOS 不像Android系统在定位服务编程时,可以指定采用哪种途径进行定位.iOS的API把底层这些细节屏蔽掉了,开发人员和用户并不知道现在设备是采用 哪种方式进行定位的,iOS系统会根据设备的情况和周围的环境,采用一套最佳的解决方案.这个方案是这样的,如果能够接收GPS信息,那么设备优先采用 GP

iOS学习--UIScrollView 原理详解

iOS学习--UIScrollView 原理详解 http://blog.csdn.net/yanfangjin/article/details/7898189 ScrollView UIScrollView UIScrollView为了显示多于一个屏幕的内容或者超过你能放在内存中的内容. Scroll View为你处理缩小放大手势,UIScrollView实现了这些手势,并且替你处理对于它们的探测和回应.其中需要注意的子类是UITableView以及UITextView(用来显示大量的文字).

(转) IOS ASI http 框架详解

(转) IOS ASI http 框架详解 ASIHTTPRequest对CFNetwork API进行了封装,并且使用起来非常简单,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中.ASIHTTPRequest适用于基本的HTTP请求,和基于REST的服务之间的交互. ASIHTTPRequest功能很强大,主要特色如下: l 通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作 l 下载的数据,可存储到内存中或直接存储到磁盘中 l 能上传

IOS—UITextFiled控件详解

IOS—UITextFiled控件详解 //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //设置边框样式,只有设置了才会显示边框样式 text.borderStyle = UITextBorderStyleRoundedRect; typedef enum { UITextBorderStyleNone, UITextBorderS