// 创建自定义按钮
UIButton *btn_click = [UIButton buttonWithType:UIButtonTypeCustom];
// 创建普通状态按钮图片
[btn_click setImage:[UIImage imageNamed:@"home"] forState:UIControlStateNormal];
// 创建高亮或选中状态按钮图片
[btn_click setImage:[UIImage imageNamed:@"home-selected"] forState:UIControlStateHighlighted];
// 设置按钮普通状态标题
[btn_click setTitle:@"我的主帖" forState:UIControlStateNormal];
// 设置按钮字体
btn_click.titleLabel.font = [UIFont systemFontOfSize:14];
// 设置按钮普通状态标题颜色
[btn_click setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
// 设置按钮高亮或选中状态标题颜色
[btn_click setTitleColor:[UIColor yellowColor] forState:UIControlStateHighlighted];
// 设置按钮背颜色
[btn_click setBackgroundColor:[UIColor grayColor]];
// 按钮按下后的模糊状态
[btn_click setAdjustsImageWhenHighlighted:NO];
// 按钮点击事件
[btn_click addTarget:self action:@selector(clickAction:) forControlEvents:UIControlEventTouchUpInside];
// 按钮坐标和尺寸
btn_click.frame = CGRectMake(0, 200, APP_WIGHT/2, 49);
// 按钮图片和标题总高度
CGFloat totalHeight = (btn_click.imageView.frame.size.height + btn_click.titleLabel.frame.size.height);
// 设置按钮图片偏移
[btn_click setImageEdgeInsets:UIEdgeInsetsMake(-(totalHeight - btn_click.imageView.frame.size.height), 0.0, 0.0, -btn_click.titleLabel.frame.size.width)];
// 设置按钮标题偏移
[btn_click setTitleEdgeInsets:UIEdgeInsetsMake(0.0, -btn_click.imageView.frame.size.width, -(totalHeight - btn_click.titleLabel.frame.size.height),0.0)];
// 加载按钮到视图
[self.view addSubview:btn_click];
效果如下:
关于UIButton,既可以采用setBackgroundImage 来设置底部图片,同时也可以采用 setImage方法;两者还是有一定区别的;
首先setBackgroundImage,image会随着button的大小而改变,图片自动会拉伸来适应button的大小,这个时候仍然可以设置button的title,title默认在button中间,image不会挡住title;
相反的的setImage,图片不会进行拉伸,原比例的显示在button上,此时再设置title,title默认显示在图右边,因此可以根据需求选中方法;