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所以,属性内容都差不多。在此就不一一介绍了,当遇到特定的在单独介绍。