在平时开发中,我们经常遇到各种各样的按钮,每次都要进行调节,而且调节的时候只能一个单位一个单位的试,这样未免也太麻烦了.在调节坐标过程中发现:
1.只有文字
这个没什么好说的,直接setTitle就行
2.只有图片
也没什么说的,setBackgroundImage就行
3.有文字和图片
(1)图片在左,文字在右:
这是系统默认的样式,直接setImage和setTitle就行.图片和标题都默认垂直居中
UIButton *showButton = [[UIButton alloc]initWithFrame:CGRectMake(100, 300, 100, 50)];
showButton.backgroundColor = kBlueColor;
[showButton setTitle:@"选择" forState:UIControlStateNormal];
[showButton setImage:[UIImage imageNamed:@"mainCellCaiClick"] forState:UIControlStateNormal];
(2)图片在上,文字在下,水平居中:
这个就有必要说了,因为系统默认的样式是上面那样的,所以文字会默认向右偏移图片的宽度,同时图片也会向左偏移.如果我们想让标题和图片都水平居中的话,就得强制偏移量还原成0
这时候需要设置EdgeInsets,加上下面两句话:
[showButton setImageEdgeInsets:UIEdgeInsetsMake(0, 0,20,showButton.titleLabel.intrinsicContentSize.width)];
[showButton setTitleEdgeInsets:UIEdgeInsetsMake(0, -showButton.imageView.intrinsicContentSize.width, -20, 0)];
顺便提一下:UIEdgeInsetsMake(top,left,bottom,right) 这里的四个参数是设置图片或者标题向 上左下右 方向移动的参数
(3)图片在下文字在上,水平居中:
和(2)中的原理是一样的
测试环境:iOS8,iOS10(iOS9应该也是可行的)