一、UIButon控件详解
<一>UIButton与UILabel的区别与联系
联系:都是UIView的直接或间接的子类,都具有UIView的属性和行为,UIView代表及其子类都代表一个矩形区域。
区别:
1、UILabel是直接继承UIView,而UIButton是间接继承其父类UIControl是直接继承UIview
2、UIView有一个属性叫做userInteractionEnable(该属性决定是否能够接受并响应事件),UILabel为NO,UIcontrol及其所有的子类的userInteractionEnable属性的值默认为YES,UIControl及其子类响应事件往往是通过addTarget方法,天加点击事件
<二>UIButton的创建
1、通过默认样式创建
2、通过自定义创建
<三>属性
配置按钮标题的属性和方法:
- titleLabel属性:按钮标题的标签
- titleForState:方法:指定状态下的按钮标题
- setTitle:forState:方法:设置指定状态下按钮的标题
- titleColorForState:方法:指定状态下的按钮标题颜色
- setTitleColor:forState:方法:设置指定状态下按钮标题的颜色
- setTitleShadowColor:forState:方法:设置指定状态下按钮标题阴影的颜色
配置按钮显示的方法:
- backgroundImageForState:方法:获得指定状态下的背景图
- setBackgroundImage:forState:方法:设置指定状态下的背景图
- imageForState:方法:获得指定状 态下的按钮图片
- setImage:forState:方法:设置指定状态下的按钮图片
配置边距的属性:
- contentEdgeInsets属性:内容的边距
- titleEdgeInsets属性:标题的边距
- imageEdgeInsets属性:图片的边距
获取按钮当前状态的属性:
- buttonType属性:可能的取值包括UIButtonTypeCustom、UIButtonTypeSystem、UIButtonTypeDetailDisclosure、UIButtonTypeInfoLight、UIButtonTypeInfoDark、UIButtonTypeContactAdd、UIButtonTypeRounedRect(过时)。
- currentTitle属性:按钮上当前显示的标题
- currentTitleColor属性:当前标题颜色
- currentImage属性:按钮上当前显示的图片
- currentBackgroundImage属性:按钮上当前显示的背景图片
- imageView属性:按钮上的图片视图
继承自UIControl的属性和方法:
- addTarget:action:forControlEvents:方法:将为事件添加的消息接受者和对应的动作加入事件派发表,简而言之就是为控件绑定事件处理的回调方法
- removeTarget:action:forControlEvents:方法:与上面方法的作用相反
- enabled属性:控件是启动还是禁用
- state属性:控件所处的状态
###UIButton的常用事件和状态###
我们先说一下UIControl的所有可能的事件。
事件类型|说明
:--|:--
UIControlEventTouchDown|单点触摸按下事件,用户点触屏幕,或者又有新手指落下的时候
UIControlEventTouchDownRepeat|多点触摸按下事件,点触计数大于1:用户按下第二、三、或第四根手指的时候
UIControlEventTouchDragInside|当一次触摸在控件窗口内拖动时
UIControlEventTouchDragOutside|当一次触摸在控件窗口之外拖动时
UIControlEventTouchDragEnter|当一次触摸从控件窗口之外拖动到内部时
UIControlEventTouchDragExit|当一次触摸从控件窗口内部拖动到外部时
UIControlEventTouchUpInside|所有在控件之内触摸抬起事件
UIControlEventTouchUpOutside|所有在控件之外触摸抬起事件(点触必须开始与控件内部才会发送通知)
UIControlEventTouchCancel|所有触摸取消事件,即一次触摸因为放上了太多手指而被取消,或者被上锁或者电话呼叫打断
UIControlEventTouchChanged|当控件的值发生改变时,发送通知。用于滑块、分段控件、以及其他取值的控件。你可以配置滑块控件何时发送通知,在滑块被放下时发送,或者在被拖动时发送
UIControlEventEditingDidBegin|当文本控件中开始编辑时发送通知
UIControlEventEditingChanged|当文本控件中的文本被改变时发送通知
UIControlEventEditingDidEnd|当文本控件中编辑结束时发送通知
UIControlEventEditingDidOnExit|当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知
UIControlEventAlltouchEvents|通知所有触摸事件
UIControlEventAllEditingEvents|通知所有关于文本编辑的事件
UIControlEventAllEvents|通知所有事件
对于UIButton来说,可能绝大多数处理的都是UIControlEventTouchUpInside事件,简单的说就是按钮点击的事件。