UIButton文字和圖片平滑的交換位置

UIButton中,如果文字和圖片都同時存在的話,系統(tǒng)默認圖片在左邊,文字在右邊,有些UI需求是圖片在右邊,文字在左邊,這就需要用代碼調(diào)試,使UIButton中兩個元素的位置發(fā)生交換。
設(shè)置UIButton的兩個屬性可以達到交換的目的,這兩個屬性是titleEdgeInsetsimageEdgeInsets.
UIEdgeInsets為一個結(jié)構(gòu)體

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

這個結(jié)構(gòu)體表示上,左,下,右的偏移量,
top : 為正數(shù)的時候,是往下偏移,為負數(shù)的時候往上偏移;
left : 為正數(shù)的時候往右偏移,為負數(shù)的時候往左偏移;
bottom : 為正數(shù)的時候往上偏移,為負數(shù)的時候往下偏移;
right:為正數(shù)的時候往左偏移,為負數(shù)的時候往右偏移;
兩個元素,文字和圖片交換的第一步,要取得這兩個元素的寬度值

CGFloat labelWidth = button.titleLabel.intrinsicContentSize.width; //注意不能直接使用titleLabel.frame.size.width,原因為有時候獲取到0值CGFloat imageWidth = button.imageView.frame.size.width;CGFloat space = 8.f; //定義兩個元素交換后的間距

第二步設(shè)置button偏移量屬性

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

參考地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容