1>创建一个普通的btn
//创建一个btn,UIButton类型的btn通过类方法来创建,一般不通过alloc和init函数来创建
UIButton* btn = [UIButtonbuttonWithType:UIButtonTypeRoundedRect];
//设置btn的位子和大小
btn.frame =CGRectMake(100,100,100,40);
//根据按钮的状态显示内容
//UIControlStateNormal:正常状态
//UIControlStateHighlighted:按下状态
//UIControlStateSelected:
[btn setTitle:@"按钮正常状态"forState:UIControlStateNormal];
[btn setTitle:@"按钮按下状态"forState:UIControlStateHighlighted];
[btn setTitle:@"按钮选中状态"forState:UIControlStateSelected];
//设置按钮的背景颜色
btn.backgroundColor = [UIColorblueColor];
//设置按钮的状态设置文字颜色
[btn setTitleColor:[UIColorredColor]forState:UIControlStateNormal];
[btn setTitleColor:[UIColorgrayColor]forState:UIControlStateHighlighted];
//设置按钮的风格颜色,就是按钮的内容颜色,优先级没有setTitleColor高
[btn setTintColor:[UIColorwhiteColor]];
//设置按钮内容的字体大小
btn.titleLabel.font = [UIFontsystemFontOfSize:18];
//设置阴影的颜色
[btn setTitleShadowColor:[UIColorredColor]forState:UIControlStateNormal];
//设置阴影的偏移
btn.titleLabel.shadowOffset =CGSizeMake(3,3);
//(自定义按钮)在点击之后 title 显示高亮的效果 : 系统按钮默认已经做了这些操作
btn.showsTouchWhenHighlighted =YES;
//自定义按钮默认情况下图片会有高亮显示效果,可以手动关闭(关闭之后,图片会保持原样)
btn.adjustsImageWhenHighlighted =NO;
//自定义按钮默认情况下图片会有 disable 显示效果,可以手动关闭(关闭之后,图片会保持原样)
btn.adjustsImageWhenDisabled =NO;
//调整内容的垂直布局方式
btn.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
//调整内容的水平布局方式
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
//调整图片的偏移
btn.imageEdgeInsets = UIEdgeInsetsMake(100, 100, 0, 0);
//调整图片的偏移
btn.titleEdgeInsets = UIEdgeInsetsMake(300, 0, 0, 0);
2>创建一个image的bin
//创建一个自定义类型的btn
UIButton* btnImage = [UIButtonbuttonWithType:UIButtonTypeCustom];
btnImage.frame =CGRectMake(100,200,100,200);
//加载图片
UIImage* icon01 = [UIImageimageNamed:@"btn01.png"];
UIImage* icon02 = [UIImageimageNamed:@"btn02.png"];
//根据按钮的状态来显示图片
[btnImage setImage:icon01forState:UIControlStateNormal];
[btnImage setImage:icon02forState:UIControlStateHighlighted];
注意:
1️⃣setImage和setBackgroundImage的区别
使用setImage函数:当图片大于btn的大小时,会自动缩小; 当图片小于btn的大小时,图片不会放大
使用setBackgroundImage函数:图片会自适应btn的大小
2️⃣UIButton控件的层级关系:backgroundColor->backgroundImage->image和title
3️⃣UIButton里面包含着一个UILabel控件,当需要设置跟状态相关属性的时候,只能通过button控件来设置,通过子控件来设置是无效的;只有与状态无关的属性通过子控件来设置才是有效的
3>UIButton事件处理机制
//向按钮添加事件函数
//参数一:事件处理函数的调用者
//参数二:事件处理函数
//参数三:按钮事件类型
//UIControlEventTouchUpInside:在按钮内抬起
//UIControlEventTouchUpOutside:在按钮外抬起
//UIControlEventTouchDown:按钮按下
[btn addTarget:selfaction:@selector(pressbtn:)forControlEvents:UIControlEventTouchUpInside];
注意:如果事件处理函数有参数,那么默认会把按钮本身作为第一个参数传到事件处理函数里面;事件处理函数也可以没有参数