话不多说先看代码
[but setTitleEdgeInsets:
UIEdgeInsetsMake(but.frame.size.height/2,
(but.frame.size.width-but.titleLabel.intrinsicContentSize.width)/2-but.imageView.frame.size.width,
0,
(but.frame.size.width-but.titleLabel.intrinsicContentSize.width)/2)];
[but setImageEdgeInsets:
UIEdgeInsetsMake(
0,
(but.frame.size.width-but.imageView.frame.size.width)/2,
but.titleLabel.intrinsicContentSize.height,
(but.frame.size.width-but.imageView.frame.size.width)/2)];
思路:
UIbutton的默认排版是 (图在左 字在右) 且 (图字 )中间没有间隔。
那么先设置文字。
top:我让文字在button的一半以下,所以top是button的高度一半。
left:整个button的宽度减去文字label的宽度后还剩下左边的默认imageView的宽度,那么先除2再减去原来的imageView的宽度。
bottom:底部距button的底部为0没有任何影响
right:右边则是button的宽减去label的宽度,如果为0会往右偏一点
图片
top:距离button顶部的距离为0没有任何影响
left:想让图片居中显示直接用button的宽度减去imageView宽度后除以2。
bottom:距离底部那么就设置距离底部为文字label的高度。正好在文字之上
right:同left 让图片居中显示,距离button右边相同的距离。(如果认为设置左边后,右边设置0,觉得反正左边设置齐了,右边不会多不会少,但是不要忘了这是EdgeInsets,如果右间距为0,那么就会往右靠,所以图片的左右距离button的边界保持一致)。
如果有问题欢迎评论,一起探讨解决这个问题。
网友评论