UIEdgeInsets
是一個結構體,用來表示矩形的邊距。它通常在視圖佈局中使用,用於修改視圖的框架(frame)。邊距值可以是正數或負數,這會對矩形的大小產生不同的影響。
UIEdgeInsets
結構體包含四個屬性:
top
:矩形頂部的邊距left
:矩形左側的邊距bottom
:矩形底部的邊距right
:矩形右側的邊距top
為 10,矩形的頂部會向下移動 10 點,縮小矩形的高度。top
為 -10,矩形的頂部會向上移動 10 點,增加矩形的高度。假設你有一個矩形,其初始框架是 (x: 0, y: 0, width: 100, height: 100)。
let insets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
let rect = CGRect(x: 0, y: 0, width: 100, height: 100)
let insetRect = rect.inset(by: insets)
結果:
let insets = UIEdgeInsets(top: -10, left: -10, bottom: -10, right: -10)
let rect = CGRect(x: 0, y: 0, width: 100, height: 100)
let insetRect = rect.inset(by: insets)
結果:
UIEdgeInsets
通常在設置視圖的邊距(例如,內容邊距或安全區域邊距)時使用。例如:
let button = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
button.contentEdgeInsets = UIEdgeInsets(top: 10, left: 20, bottom: 10, right: 20)
這樣設置後,按鈕的內容(如標題或圖片)會有 10 點的頂部和底部邊距,以及 20 點的左右邊距。
top
為 -10,矩形的頂部會向上移動 10 點,增加矩形的高度。當你給 UIEdgeInsets
設置正值時,這些值表示從矩形的邊緣向內縮進的距離。換句話說,正值表示你要從矩形的每一個邊緣向內移動,這樣就會使矩形變小。
假設你有一個初始矩形,框架為 (x: 0, y: 0, width: 100, height: 100)
。
如果你設置 UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
,這意味著:
這樣一來,矩形的每一邊都向內縮進了 10 點,導致矩形的寬度和高度都減少了 20 點(每邊 10 點,共兩邊)。
結果,新的矩形框架變為 (x: 10, y: 10, width: 80, height: 80)
。
正值使矩形縮小的原因在於,這些值表示從矩形的邊緣向內縮進的距離。這樣做會減少矩形的總寬度和高度,使其變得更小。
把button的圖片從預設的置左改成置右
extension UIButton {
func configRightImage() {
self.titleEdgeInsets = UIEdgeInsets(top: 0, left: -(self.imageView?.frame.size.width ?? 0), bottom: 0, right: self.imageView?.frame.size.width ?? 0)
self.imageEdgeInsets = UIEdgeInsets(top: 0, left: (self.titleLabel?.frame.size.width ?? 0) - 10, bottom: 0, right: -(self.titleLabel?.frame.size.width ?? 0))
}
}