UIButton

一个UIButton的实例变量, 使一个按钮(button)在触摸屏上生效。一个按钮监听触摸事件,当被点击时,给目标对象发送一个动作(action)消息。设置目标对象的方法和动作继承于UIControl。UIButton类提供设置一个按钮的标题(title),图片(image),和其他外形属性的方法。通过使用这些函数,你可以为每一个按钮状态指定不同的外观显示。

关于基本视图行为的信息,请参考  View Programming Guide for iOS。

关于更多外形和行为配置的信息,请参考Button。

一、创建Buttons

语法:+(instancetype)buttonWithType:(UIButtonType)buttonType

参数说明:

buttonType:按钮类型。可以使用的值:详细请参照UIButtonType

typedefenum{

UIButtonTypeCustom=0,

UIButtonTypeSystem,

UIButtonTypeDetailDisclosure,

UIButtonTypeInfoLight,

UIButtonTypeInfoDark,

UIButtonTypeContactAdd,

UIButtonTypeRoundedRect,

}UIButtonType;

Constants

UIButtonTypeCustom

No button style.

Available in iOS 2.0 and later.

UIButtonTypeSystem

A system style button, such as those shown in navigation bars and toolbars.

Available in iOS 7.0 and later.

UIButtonTypeDetail

DisclosureA detail disclosure button.

Available in iOS 2.0 and later.

UIButtonTypeInfoLight

An information button that has a light background.

Available in iOS 2.0 and later.

UIButtonTypeInfoDark

An information button that has a dark background.

Available in iOS 2.0 and later.

UIButtonTypeContact

AddA contact add button.

Available in iOS 2.0 and later.

UIButtonTypeRoundedRect

A rounded-rectangle style button.

Use UIButtonTypeSystem instead. Deprecated in iOS 7.0.

返回值:返回一个新创建的按钮

讨论:

这个方式是使用特定配置创建按钮对象的便利构造器。如果你继承UIButton,这个方法不会返回你的子类的一个实例变量。如果你想要为一个特定的子类创建一个实例变量,你必须直接alloc/init这个按钮。

当创建一个自定义按钮时(类型是 UIButtonTypeCustom的按钮),这个按钮的框架被初始化为(0, 0, 0, 0)。在将按钮添加到界面之前,你应该使用适当的参数,更新该按钮的框架。

二、配置按钮的标题

1. titleLabel (Property)

一个视图,用于为一个button显示 currentTitle 的参数(read-only)

语法定义:@propety(nonatomic, readonly, strong) UILabel *titleLabel

讨论

虽然这个属性是read-only,但是他们自己的修改特性(setter与getter方法)是read-write。首先使用他们的修改特性(setter与getter方法)来配置一个button的文本。例如:

UIButton*button= [UIButton buttonWithType:UIButtonTypeSystem];

button.titleLabel.font= [UIFont systemFontOfSize:12];

button.titleLabel.lineBreakMode=NSLineBreakByTruncatingTail;

不要使用标签对象(the label object)设置文字颜色或者颜色阴影。而是使用这个类(UIButton)中的 setTitleColor:forState: 和 setTitleShadowColor:forState: 方法来改变那些参数。

即使按钮还没有被显示,titleLabel属性也返回一个数值。对于system button,这个属性的值是:nil。

2. -titleForState:

返回与指定状态相关的标题。

语法:-(NSString*)titleForState:(UIControlState)state

参数:

state:使用标题的状态。可以使用的值:请参考UIControlState的描述

返回值:

指定状态的标题。如果没有为指定状态设置标题,这个方法返回与 UIControlStateNormal 状态相关的标题。

3. -setTitle:forState:

为指定状态设置标题

语法:-(void)seTitle:(NSString *)title forState:(UIControlState)state

参数:

title:用于指定状态的标题

state:使用指定标题的状态。可以使用的值:请参考UIControlState的描述

讨论

使用这个方法,为按钮设置标题。你指定的标题格式源于与按钮相关的便签对象。如果为一个按钮既设置了一个标题,又设置了一个属性化的标题,那么按钮偏向使用那个被属性化的标题

至少,你应该为normal state状态设置值。如果没有为一个状态没有指定title,默认行为是:使用与 UIControlStateNormal 相关的标题。如果UIControlStateNormal状态的title没有设置,那么这个属性默认为一个系统参数。

4 -attributedTitleForState:

返回与特定状态相关的格式化标题(the styled title)

语法:- (NSAttributedString*)attributedTitleForState:(UIControlState)state

参数:

state:使用该格式化字标题的状态。可以使用的值:请参考UIControlState的描述

返回值:

特定状态的标题。如果指定的状态没有设置格式化标题,这个方法将返回与UIControlStateNormal状态相关的格式化标题。如果UIControlStateNormal状态也没有设置格式化标题,返回nil。

5.- setAttributedTitle:forState:

语法:- (void)setAttributedTitle:(NSAttributedString*)title forState:(UIControlState)state

参数:

title:用于标题的格式化文本字符串

state:使用指定标题的状态。以使用的值:请参考UIControlState的描述。

讨论:

使用这个方法,为按钮设置包含所有相关格式信息的标题。如果同时各按钮设置标题和格式化标题,按钮会偏向使用格式化字符。

至少,你应该为normal state状态设置值。如果没有为一个状态没有指定title,默认行为是:使用与 UIControlStateNormal 相关的标题。如果UIControlStateNormal状态的title没有设置,那么这个属性默认为一个系统参数。

6 -titleColorForState:

返回用于一个状态的标题的颜色

语法:- (UIColor*)titleColorForState:(UIControlState)state

参数:

state:使用这个标题颜色的状态。可以使用的值:请参考UIControlState的描述

返回:

指定状态下的标题的颜色

7. - setTitleColor: forState:

为指定状态下的标题设置颜色.

语法:- (void)setTitleColor:(UIColor*)color forState:(UIControlState)state

参数:

color:用于设置指定状态下标题的颜色

state:使用指定颜色的状态。可以使用的值:请参考UIControlState的描述

讨论:

总的来说, 如果没有为一个状态指定属性,默认使用UIControlStateNormal的参数值。如果UIControlStateNormal的参数值也没有设置,则这个属性默认为一个系统参数。因此,至少你应该为the normal state设置参数。

8 -titleShadowColorForState:

返回一个状态下标题的阴影颜色

语法:- (UIColor*)titleShadowColorForState:(UIControlState)state

参数:

state:使用该标题阴影颜色的状态。可以使用的值:请参考UIControlState的描述

返回值:

指定状态下的标题的阴影颜色。

9 -setTitleShadowColor: forState:

为指定状态下的标题阴影设置颜色

语法:- (void)setTitleShadowColor:(UIColor*)color forState:(UIControlState)state

参数:

color:用于设置指定状态下标题阴影的颜色

state:使用指定阴影颜色的状态。可以使用的值:请参考UIControlState的描述

讨论:

总的来说, 如果没有为一个状态指定属性,默认使用UIControlStateNormal的参数值。如果UIControlStateNormal的参数值也没有设置,则这个属性默认为一个系统参数。因此,至少你应该为the normal state设置参数。

10 - reversesTitleShadowWhenHighlighted  (Property)

一个布尔值,用于决定,当按钮高亮时,是否更改标题阴影。

语法:@property(nonatomic)BOOL reversesTitleShadowWhenHighlighted

讨论:

如果是YES,当高亮时,阴影从雕刻外观编程浮雕外观。默认参数是:NO。

二、配置按钮显示

(Configuring Button Presentation)


1 -adjustsImageWhenHighlighted (property)

一个布尔数值,决定当一个按钮是高亮时,图片是否更改

语法:@property(nonatomic)BOOL adjustsImageWhenHighlighted

讨论:

如果是:YES,当按钮高亮时,图片是灰度。默认参数是YES

2 -adjustsImageWhenDisable (Property)

一个布尔数值,决定当一个按钮是不可用时,图片是否更改

语法:@property(nonatomic)BOOL adjustsImageWhenDisabled

讨论:

如果是:YES,当按钮不可用时,图片加深。默认参数是YES

3 -showsTouchWhenHighlight (Property)

一个布尔数值,决定当点击按钮是否会导致其发光

语法:@property(nonatomic)BOOL showsTouchWhenHighlighted

讨论:

如果是:YES,当按钮被点击,按钮发光,否则,它将不会。当发光,图片与按钮行为不会改变。默认参数是NO

4 -backgroundImageForState:

返回一个按钮状态下的背景图片

语法:- (UIImage*)backgroundImageForState:(UIControlState)state

参数:

state:使用该背景图片的状态。可以设置的值:请参考UIContorlState描述

返回:

返回在指定状态下的背景图片

5 -imageForState:

返回一个按钮状态下的图片

语法:- (UIImage*)imageForState:(UIControlState)state

参数:

state:使用该图片的状态。可以设置的值:请参考UIControlState描述

返回:

返回指定状态下的背景。

6 -setBackgroundImage: forState:

为指定按钮状态设置背景图片

语法:- (void)setBackgroundImage:(UIImage*)image forState:(UIControlState)state

参数:

image:为指定状态使用的背景图片。

state:使用指定图片的状态。可以设置的值:请参考UIControlState描述

讨论:

总的来说, 如果没有为一个状态指定属性,默认使用UIControlStateNormal的参数值。如果UIControlStateNormal的参数值也没有设置,则这个属性默认为一个系统参数。因此,至少你应该为the normal state设置参数。

7 - setImage:forState:

为指定按钮状态设置图片

语法:- (void)setImage:(UIImage*)image forState:(UIControlState)state

参数:

image:为指定状态使用的背景图片。

state:使用指定图片(原文是:标题??)的状态。可以设置的值:请参考UIControlState描述

讨论:

总的来说, 如果没有为一个状态指定属性,默认使用UIControlStateNormal的参数值。如果UIControlStateNormal的参数值也没有设置,则这个属性默认为一个系统参数。因此,至少你应该为the normal state设置参数。

8 tintColor (Property)

应用给按钮与图片的着色颜色值

http://www.cocoachina.com/ios/20150703/12363.html

语法:@property(nonatomic,strong)UIColor*tintColor

讨论:

在IOS7.0,所有的UIView的子类,他们关于tintColor的行为,来自于基类。参看the discussion of tintColor at the UIView level 获取更多信息

这个属性对类型是UIButtonTypeCustom的按钮没有默认的效果。对于custom button,你必须自己实现关于tintColor的任何操作。

三、配置内边缘(Configuring Edge Insets)

1. contentEdgeInsets (Property)

所有按钮的内容周围的矩形的内侧或者外侧的边缘。

语法:@property(nonatomic)UIEdgeInsets contentEdgeInsets

讨论:

使用这个属性,重新调整大小,或者复位实际存在的(用于按钮内容的)矩形绘制区域。这个内容包括按钮图片和按钮标题。你能够为四个内侧(上,下,左,右)的任意一个,指定不同是数值。一个正值,缩小(或者向凹)这个边缘,将它向按钮中心移动。一个负值,放大(或者外凸)这个边缘。使用UIEdgeInsetsMake函数为这个属相构建一个数值。默认的参数是UIEdgeInsetZero。

按钮使用这个属性来确定 intrinsicContentSize(固有的内容大小)和sizeThatFits:(占用的尺寸)

2.titleEdgeInsets (Property)

在按钮标题文本周围矩形的,向内或者向外的边缘。

语法:@property(nonatomic)UIEdgeInsets titleEdgeInsets

讨论:

使用这个属性,重新调整大小,或者复位实际存在的(用于按钮标题的)矩形绘制区域。你能够为四个内侧(上,下,左,右)的任意一个,指定不同是数值。一个正值,缩小(或者向凹)这个边缘,将它向按钮中心移动。一个负值,放大(或者外凸)这个边缘。使用UIEdgeInsetsMake函数为这个属相构建一个数值。默认的参数是UIEdgeInsetZero。

在一个标题矩形已经被设置好适合按钮文本后,你又为它指定内边距,正值的内边距,实际上会剪掉标题文本。(即:文本显示不全)。

这个属性只用来定位标题在布局中的位置,按钮不使用这个属性来确定 intrinsicContentSize(固有的内容大小)和sizeThatFits:(占用的尺寸)

3.imageEdgeInsets (Property)

属于按钮图片周围矩形的,向内或者向外的边缘

语法:@property(nonatomic)UIEdgeInsets imageEdgeInsets

使用这个属性,重新调整大小,或者复位实际存在的(用于按钮图片的)矩形绘制区域。你能够为四个内侧(上,下,左,右)的任意一个,指定不同是数值。一个正值,缩小(或者向凹)这个边缘,将它向按钮中心移动。一个负值,放大(或者外凸)这个边缘。使用UIEdgeInsetsMake函数为这个属相构建一个数值。默认的参数是UIEdgeInsetZero。

这个属性只用来定位图片在布局中的位置,按钮不使用这个属性来确定 intrinsicContentSize(固有的内容大小)和sizeThatFits:(占用的尺寸)

四、获取当前状态(Getting the Current State)

1. buttonType (Property)

按钮类型(read-only)

语法:@property(nonatomic,readonly)UIButtonTypebuttonType

讨论:

可能参数,请参照:UIButtonType

2. currentTitle (Property)

被显示在按钮上的当前标题。(read-only)

语法:@property(nonatomic,readonly,strong)NSString*currentTitle

讨论:

无论何时按钮状态改变,这个属性的参数都是自动设置的。当按钮状态没有一个自定义的标题字符串与它相关联,这个方法返回当前显示的,与UIControlStateNormal状态相关联的典型标题。这个参数可能为nil。

3. currentAttributedTitle (Property)

被显示在按钮上的当前格式化标题

语法:@property(nonatomic,readonly,strong)NSAttributedString*currentAttributedTitle

这个属性的参数反映了标题与控制器当前状态相联系,当按钮状态没有一个自定义的标题字符串与它相关联,这个方法返回当前显示的,与UIControlStateNormal状态相关联的典型属性化标题

4.currentTitleColor (Property)

显示的标题的颜色。(read-only)

语法:@property(nonatomic,readonly,strong)UIColor*currentTitleColor

讨论:

这个参数保证不会为nil,默认的参数是white。

5.currentTitleShadowColor (Property)

显示的标题阴影的颜色。(read-only)

语法:@property(nonatomic,readonly,strong)UIColor*currentTitleShadowColor

讨论:

默认的参数是white。

6.currentImage(Property)

�被显示在按钮上的当前图片(read-only)

语法:@property(nonatomic,readonly,strong)UIImage*currentImage

讨论:

这个参数可以为nil。

7.currentBackgroundImage ( Property)

�被显示在按钮上的当前背景图片(read-only)

语法:@property(nonatomic,readonly,strong)UIImage*currentBackgroundImage

讨论:

这个参数可以为nil。

8.  imageView (Property)

按钮的图片视图(read-only)

语法:@property(nonatomic,readonly,strong)UIImageView*imageView

�虽然这个属性是read-only,但是它自己的属性方法是read/write。使用这些方法可以配置按钮视图的显示和行为。例如:

UIButton*button= [UIButton buttonWithType:UIButtonTypeSystem];

button.imageView.exclusiveTouch=YES;

这个imageView属性返回一个参数,即使按钮尚还没有被显示。对于系统按钮(system buttons0,这个属性参数是nil。

五、获得尺寸(Getting Dimensions)

1 -backgroundRectForBounds:

返回消息接收者绘制它的背景在所的矩形区域。

语法:- (CGRect)backgroundRectForBounds:(CGRect)bounds

参数:

bounds:消息接收者的边界矩形

返回值:

返回边界矩形,在这里去绘制任何标准的按钮内容、

讨论:

这个方法的默认执行是返回在bounds参数里的数值。这个矩形区域代表一个区域,在这个区域,按钮绘制它的标准背景内容。 那些提供自定义背景修饰的子类,可以重写这个方法,返回一个重构的矩形边界,以防止按钮覆盖掉任何自定义的内容。

2. -contentRectForBounds:

返回一个矩形,在这个矩形内,消息接受着绘制它的整个内容。

语法:- (CGRect)contentRectForBounds:(CGRect)bounds

参数:

bounds:消息接收者的边界矩形

返回:

返回一个矩形,在这个矩形内,消息接受着绘制它的整个内容。

讨论:

这个内容矩形是一片区域,这片区域需要显示图片和标题,包括任何为了校准和其他设置所进行的添加与调整。

3. -titleRectForContentRect:

返回一个矩形,在这个矩形内,消息接受着绘制它的标题

语法:- (CGRect)titleRectForContentRect:(CGRect)contentRect

参数:

contentRect:消息接受者的内容矩形

返回:

返回一个矩形,在这里,消息接受者绘制它的标题

4. -imageRectForContentRect:

返回一个矩形,在这个矩形内,消息接受着绘制它的标题

语法:- (CGRect)imageRectForContentRect:(CGRect)contentRect

参数:

contentRect:消息接受者的内容矩形

返回:

返回一个矩形,在这里,消息接受者绘制它的图形。

六、数据类型

UIButtonType

Specifies the style of a button.

Declaration

typedefenum{

UIButtonTypeCustom=0,

UIButtonTypeSystem,

UIButtonTypeDetailDisclosure,

UIButtonTypeInfoLight,

UIButtonTypeInfoDark,

UIButtonTypeContactAdd,

UIButtonTypeRoundedRect,

}UIButtonType;

Constants

UIButtonType

CustomNo button style.

Available in iOS 2.0 and later.

UIButtonTypeSystem

A system style button, such as those shown in navigation bars and toolbars.

Available in iOS 7.0 and later.

UIButtonTypeDetailDisclosure

A detail disclosure button.

Available in iOS 2.0 and later.

UIButtonTypeInfoLight

An information button that has a light background.

Available in iOS 2.0 and later.

UIButtonTypeInfoDark

An information button that has a dark background.

Available in iOS 2.0 and later.

UIButtonTypeContactAdd

A contact add button.

Available in iOS 2.0 and later.

UIButtonTypeRoundedRect

A rounded-rectangle style button.

Use UIButtonTypeSystem instead.

Deprecated in iOS 7.0.

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

推荐阅读更多精彩内容