UIButton在iOS开发中是再常用不过的控件了,但有些属性用的较少,难免会忘记,今天对按钮的属性稍作总结。
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(10, 100, 300, 100)];
btn.backgroundColor = [UIColor grayColor];
[self.view addSubview:btn];
/*
button显示的内容是带状态的,即在不同的状态下可能会显示不同的内容,所以在设置button需要在
特定的状态下设置,如:1)背景图片 2)文字内容、颜色 3)图片
按钮的状态
UIControlStateNormal // 正常状态
UIControlStateHighlighted // 高亮状态
UIControlStateDisabled // 禁用状态
UIControlStateSelected // 选中状态
UIControlStateApplication //
UIControlStateReserved // 保留状态
*/
// 1.背景图片
[btn setBackgroundImage:[UIImage imageNamed:@"btn_bg_image"] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:@"btn_bg_image_h"] forState:UIControlStateHighlighted];
/* 2.按钮文字
@property(nonatomic,readonly,retain) UILabel *titleLabel
1.不能通过titleLabel.text属性来设置按钮的文字,设置按钮的文字需要根据状态设置文字
2.通过设置titleLabel.font设置按钮文字的字体。
btn.titleLabel.text = @"UIButton文字"; //不能设置按钮文字
*/
// 设置文字内容、颜色时一定要带状态
[btn setTitle:@"UIButton正常状态文字" forState:UIControlStateNormal];
[btn setTitle:@"UIButton高亮状态文字" forState:UIControlStateHighlighted];
[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[btn setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted];
btn.titleLabel.font = [UIFont systemFontOfSize:27]; // 文字字体
btn.titleLabel.backgroundColor = [UIColor blackColor]; // 按钮内部label背景
/* 3.按钮的图片
@property(nonatomic,readonly,retain) UIImageView *imageView
btn.imageView.image = [UIImage imageNamed:@"btn_image"]; //不能设置按钮图片
*/
[btn setImage:[UIImage imageNamed:@"btn_image"] forState:UIControlStateNormal];
[btn setImage:[UIImage imageNamed:@"btn_image_h"] forState:UIControlStateHighlighted];
// 4.内边距相关设置
// 设置按钮内容(包括文字和图片)的内边距
[btn setContentEdgeInsets:UIEdgeInsetsMake(10, 0, 0, 0)];
// 设置文字的内边距
[btn setTitleEdgeInsets:UIEdgeInsetsMake(0, -50, 10, 0)];
// 设置图片的内边距
[btn setTitleEdgeInsets:UIEdgeInsetsMake(0, 20, 10, 0)];
// 5、按钮内部内容(文字,图片)位置水平、垂直方向调整
/*
@property(nonatomic) UIControlContentHorizontalAlignment contentHorizontalAlignment;
调整按钮内容在水平方向的位置, 默认情况下是居中的
UIControlContentHorizontalAlignmentCenter = 0, // 水平居中 (默认)
UIControlContentHorizontalAlignmentLeft = 1, // 紧靠左边
UIControlContentHorizontalAlignmentRight = 2, // 紧靠右边
UIControlContentHorizontalAlignmentFill = 3, // 水平方向填充
*/
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
/*
@property(nonatomic) UIControlContentVerticalAlignment contentVerticalAlignment;
调整按钮内容在垂直方向的位置, 默认情况下是居中的
UIControlContentVerticalAlignmentCenter = 0, // 垂直居中 (默认)
UIControlContentVerticalAlignmentTop = 1, // 紧靠顶部
UIControlContentVerticalAlignmentBottom = 2, // 紧靠底部
UIControlContentVerticalAlignmentFill = 3, // 垂直方向填充
*/
btn.contentVerticalAlignment = UIControlContentVerticalAlignmentBottom;
// 6、按钮各种状态下显示效果
//点击时的闪光效果会被前景图片遮住中间部分 (默认为NO)
btn.showsTouchWhenHighlighted = YES;
//当按钮高亮的情况下,图像的颜色会被画深一点,(默认为YES)
btn.adjustsImageWhenHighlighted = YES;
// 当按钮禁用的情况下,图像的颜色会被画深一点,(默认为YES)
btn.adjustsImageWhenDisabled = YES;
// 7、监听按钮的点击
[btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
}
- (void)btnClick:(UIButton *)btn
{
NSLog(@"====btnClick===");
}