UIButton简单介绍

 UIButton的创建和主要属性

 UIButton从字面上大家就应该能看出来是一个可点击的控件,类似于android中button,UIButton继承与UIView,UIView是ios中所有控件的父类。(以下简称btn)

创建方式

btn创建有两种:

(1)常规的initwithFrame,也就是通过alloc的方法来创建。

UIButton *btn=[UIButton alloc]initWithFrame:CGRectMake(x,y,width,height);

后面的四个属性,代表来btn的x坐标,y坐标,宽,高。这些坐标都是以屏幕左上角为原点的。Frame属性就是用来控制位置和大小的

(2)UIButton的类方法buttonWithType,也就是类似android中的静态方法。

UIButton * btn=[UIButton buttonwithType:UIButtonTypeCustom]; 这种方式创建出不同类型的btn对象,类型样式下面介绍。

属性方法

[btn.setTitle:@"你好" forState:UIControlStateNomal]//设置btn的文字,后面State为btn的状态。

btn.contentHorizontalAlignment=UIControlContentHorizontalAlignmentCenter;//设置btn文字位置,居中。

[btn setTitleColor:[UIColorblueColor]forState:UIControlStateNormal];// 设置btn的背景颜色。

UIImage*image=[UIImageimageNamed:@"btn01"];//获取image对象,用于设置btn背景图片

[btn setBackgroundImage:imageforState:UIControlStateNormal];//state为状态

能够定义的button类型由6种

typedefenum

{

UIButtonTypeCustom = 0,//自定义,无风格

UIButtonTypeRoundedRect,//白色圆角矩形,类似偏好设置表格单元或者地址簿卡片

UIButtonTypeDetailDisclosure,//蓝色的披露按钮,可放在任何文字旁

UIButtonTypeInfoLight,//微件(widget)使用的小圆圈信息按钮,可以放在任何文字旁

UIButtonTypeInfoDark,//白色背景下使用的深色圆圈信息按钮

UIButtonTypeContactAdd,//蓝色加号(+)按钮,可以放在任何文字旁

} UIButtonType;

btn.titleLabel.font=[UIFontsystemFontOfSize:30];//设置字体大小

[btn setTitleColor:[UIColor blueColor]forState:UIControlStateNormal];//设置btn文字颜色

[btn setTag;1001]//设置tag值,类似于android中控件的tag值,用于标示控件的唯一性。

btn.layer.cornerRadius=4.5;//设置btn的圆角

btn.layer.borderWidth=0.5;//设置btn边框高度

CGColorSpaceRefspace=CGColorSpaceCreateDeviceRGB();//设置颜色空间为rbg

CGColorRefborderColor=CGColorCreate(space, (CGFloat[]){0,0,0,1});//大括弧中代表r,b,g,alpha(透明度)

btn.layer.borderColor=borderColor;//设置btn边框颜色

参数 forState . 这个参数决定了标题、图像或其他属性将在何种状态下显现。你可以编程令按钮在那个状态变化。

enum{

UIControlStateNormal       = 0,//常态

UIControlStateHighlighted  = 1 << 0,//高亮

UIControlStateDisabled     = 1 << 1,//禁用

UIControlStateSelected     = 1 << 2,//选中

UIControlStateApplication  = 0x00FF0000,//当应用程序标志使用时

UIControlStateReserved     = 0xFF000000//为内部框架预留的

};

typedef NSUInteger UIControlState;

你只要掌握前四种状态就好了。

当按钮高亮或者禁用,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

{

returnCGRectMake(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//通知所有事件

};

需要显示在view上方法如下;

[self.view addSubview:btn1];

总结

btn主要属性就是这些,其他的一些控件因为都是继承于UIView所以,属性内容都差不多。在此就不一一介绍了,当遇到特定的在单独介绍。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容