[iOS] UIButton調整text和image之間的位置

我設定了一個按鈕,裡面有文字和圖片,一開始設定好後加入到view(全以程式進行),圖片是在文字的左邊,我預期的效果是圖片在文字的右邊,因此需要設定insets。

你可以對button的下列兩個insets特性作設定:
  • button.imageEdgeInsets
  • button.titleEdgeInsets
由文字可以看出,這是對於image和title進行insets的設定,透過UIEdgeInsetsMake製作,UIEdgeInsetsMake的參數為:

UIEdgeInsetsMake(上, 左, 下, 右);

這樣就可以操控文字和圖片的相對位置了。比方說,我希望圖片和文字的排列如我一開始所講,那我就是要加大圖片和左邊邊界之間的距離(增加按鈕寬度減去文字寬度再除以2),文字要加大和右邊邊界的距離(要增加按鈕寬度減去圖片寬度再除以2)。

每一個參數,如果是正值,就是會往中心點靠近。反之,如果是負值,那就會往外移動,變成展開的形式,可以參考這一篇,裡面有一個很棒的答案。總之,你可能同時要設定正負值,因為你可能會希望他往中心移動(比方說加大與左邊的距離),然後又往外展開(就是一直往右邊移動到出邊界)。

但要注意,官方文件有說,button不會用 insets來決定intrinsic尺寸,換句話說,你會看到文字或是圖片因為超出邊界而被裁掉。所以,你可以使用contentEdgeInsets來設定,設定的方法可以參考那個答案,重點是補上你超出去的距離(負值的部份)。

留言