关于UIButton中,文字和图片交换位置的代码

UIButton中,如果文字和图片都同时存在的话,系统默认图片在左边,文字在右边,有些UI需求是图片在右边,文字在左边,这就需要用代码调试,使UIButton中两个元素的位置发生交换。

设置UIButton的两个属性可以达到交换的目的,这两个属性是titleEdgeInsets和imageEdgeInsets.

UIEdgeInsets为一个结构体

typedef struct UIEdgeInsets {
      CGFloat top, left, bottom, right;     
} UIEdgeInsets;

这个结构体表示上,左,下,右的偏移量,

top : 为正数的时候,是往下偏移,为负数的时候往上偏移;

left : 为正数的时候往右偏移,为负数的时候往左偏移;

bottom : 为正数的时候往上偏移,为负数的时候往下偏移;

right :为正数的时候往左偏移,为负数的时候往右偏移;

两个元素,文字和图片交换的第一步,要取得这两个元素的宽度值

CGFloat labelWidth = button.titleLabel.intrinsicContentSize.width; //注意不能直接使用titleLabel.frame.size.width,原因为有时候获取到0值
CGFloat imageWidth = button.imageView.frame.size.width;
CGFloat space = 8.f; //定义两个元素交换后的间距

第二步设置button偏移量属性

button.titleEdgeInsets = UIEdgeInsetsMake(0, - imageWidth - space,0,imageWidth + space);
button.imageEdgeInsets = UIEdgeInsetsMake(0, labelWidth + space, 0,  -labelWidth - space);

 

posted @ 2017-04-13 13:20  蓝清凡  阅读(1769)  评论(0编辑  收藏  举报