介绍:UIButton的类是一个UIControl子类,它实现了在触摸屏上的按钮。触摸一个按钮拦截事件和动作消息发送到目标对象时。设定的目标和行动方法都继承自UIControl。这个类提供了方法来设置标题,图像,按钮等外观属性。通过使用set方法,你可以指定一个不同的外观为每个按钮状态。
创建使用步骤:
1.UIButton*btn = [UIButtonbuttonWithType:UIButtonTypeCustom];//创建对象
2.[self.viewaddSubview:btn];//添加按钮
3.btn.frame=CGRectMake(100,100,100,100);//设置按钮的位置和尺寸,才能显示
4.btnaddTarget:selfaction:@selector(btnClick)//监听按钮的点击事件forControlEvents:UIControlEventTouchUpInside];监听按钮点击(点击按钮后就会调用self的btnClick方法) //都能调用void和IBactionTarget目标(让谁做事情)—>控制器action方法(做什么事情)Events事件(当按钮触发某事件)点击按钮内部并松手
类方法:
UIButton*btn = [UIButtonbuttonWithType:UIButtonTypeCustom]; //按钮类型
创建的button类型有以下6种,
typedef enum {
UIButtonTypeCustom = 0, 自定义风格
UIButtonTypeRoundedRect,圆角矩形
UIButtonTypeDetailDisclosure, 蓝色小箭头按钮,主要做详细说明用
UIButtonTypeInfoLight, 亮色感叹号
UIButtonTypeInfoDark, 暗色感叹号
UIButtonTypeContactAdd, 十字加号按钮
} UIButtonType;
删除事件处理
[btn removeTarget:nil action:nil forControlEvents:UIControlEventTouchUpInside];
UIButton、UILabel、UITextField都继承自UIView
属性:
1.Frame属性
第2种方法创建按钮后你可以给按钮的frame属性赋值,用一个CGRect结构设置他的位置和大小
CGRect btn2Frame = CGRectMake(10.0, 10.0, 60.0, 44.0);
btn2.frame =btn2Frame;
2. title属性
对于任何特定状态下的按钮,都可以设定该按钮该状态下的按钮标题。用setTitle 方法 设置即可:
[btn1 setTitle:@"BTN1" forState:UIControlStateNormal];
3. image属性
你也可以为按钮的某一状态设置为图。用 setImage 即可:
[btn2 setImage:[UIImage imageNamed:@"pic"] forState:UIControlStateNormal];
4. Color属性
此外,你还可以为每种按钮状态设置标题的颜色和阴影,以及按钮的背景。方法 setTitleColor 和 setTitleShadowColor 都需要一个UIColor对象做参数:
[btn1 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];//设置标题颜色
[btn1 setTitleShadowColor:[UIColor grayColor] forState:UIControlStateNormal ];//阴影
[btn1 setBackgroundImage:[UIImage imageNamed:@"PIC"] forState:UIControlStateHighlighted];//背景图像
5.使用时状态
上面几个方法都提到 共同的参数 forState . 这个参数决定了标题、图像或其他属性将在何种状态下显现。你可以编程令按钮在那个状态变化
enum {
UIControlStateNormal = 0, //常态
UIControlStateHighlighted = 1 << 0, // used when UIControl isHighlighted is set 高亮
UIControlStateDisabled = 1 << 1, //禁用
UIControlStateSelected = 1 << 2, // flag usable by app (see below) 选中
UIControlStateApplication = 0x00FF0000, // additional flags available for application use 当应用程序标志使用时
UIControlStateReserved = 0xFF000000 // flags reserved for internal framework use 为内部框架预留的
};
typedef NSUInteger UIControlState;
设置按钮按下会发光
button.showsTouchWhenHighlighted=NO;
设置按钮内部图片间距和标题间距
UIEdgeInsets insets; // 设置按钮内部图片间距
insets.top = insets.bottom = insets.right = insets.left = 20;
bt.contentEdgeInsets = insets;
bt.titleEdgeInsets = insets; // 标题间距
提示:
·按钮的背景颜色background color不能分状态,因为继承UIView [对象 setbackgroundColor] 没状态
·默认加入内容image(及其文字title)图片水平居中 //通过Control属性的alignment属性修改对齐,最后个(水平对齐)能使图片拉伸【第一次在IB中添加会是图片尺寸大小】【backimage会是按钮大小(拉伸压缩)】
·默认背景图片background会被拉伸,按钮图片都能被压缩(控件尺寸小于图片)
·不能直接修改对象的buttonType属性(readonly),只能在初始化创建时候设置 ,设置状态时设置按钮文字图片