UIEdgeInsets用法

更新於 發佈於 閱讀時間約 5 分鐘

UIEdgeInsets 是一個結構體,用來表示矩形的邊距。它通常在視圖佈局中使用,用於修改視圖的框架(frame)。邊距值可以是正數或負數,這會對矩形的大小產生不同的影響。

UIEdgeInsets 結構體

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)

結果:

  • insetRect 的框架會是 (x: 10, y: 10, width: 80, height: 80)。
  • 矩形的每一邊都向內縮進了 10 點,因此寬度和高度都減少了 20 點。

使用負值的邊距

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)

結果:

  • insetRect 的框架會是 (x: -10, y: -10, width: 120, height: 120)。
  • 矩形的每一邊都向外擴展了 10 點,因此寬度和高度都增加了 20 點。

在視圖佈局中的應用

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 點,增加矩形的高度。

正值是縮小?負值是擴大?

raw-image

正值的邊距

當你給 UIEdgeInsets 設置正值時,這些值表示從矩形的邊緣向內縮進的距離。換句話說,正值表示你要從矩形的每一個邊緣向內移動,這樣就會使矩形變小。

視覺化理解

假設你有一個初始矩形,框架為 (x: 0, y: 0, width: 100, height: 100)

正值邊距的應用

如果你設置 UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10),這意味著:

  • 頂部:矩形的頂部邊緣向下移動 10 點。
  • 左側:矩形的左邊邊緣向右移動 10 點。
  • 底部:矩形的底部邊緣向上移動 10 點。
  • 右側:矩形的右邊邊緣向左移動 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))

    }

}
留言
avatar-img
留言分享你的想法!
avatar-img
Michelle Chen的沙龍
8會員
34內容數
紀錄iOS開發上遇到的問題或是一些流程筆記。主要都是Swift。
Michelle Chen的沙龍的其他內容
2024/09/06
本文介紹了使用KeyboardLayoutGuide的方法,以及在不同iOS版本和設備上遇到的佈局問題。透過調整TextView的底部對齊方式,成功解決了在模擬器和真實設備上出現的錯誤,提供了有用的建議給開發者。本文還探討了為何在iOS15與Xib的組合使用中會出現問題,以及解決方案。
Thumbnail
2024/09/06
本文介紹了使用KeyboardLayoutGuide的方法,以及在不同iOS版本和設備上遇到的佈局問題。透過調整TextView的底部對齊方式,成功解決了在模擬器和真實設備上出現的錯誤,提供了有用的建議給開發者。本文還探討了為何在iOS15與Xib的組合使用中會出現問題,以及解決方案。
Thumbnail
2024/08/07
使用者回報的超級奇怪線上問題,用數字鍵盤(NumberPad)更改欄位時,送出後尾數都會消失。例如:30 ⭢ 3,52 ⭢ 5。 尋尋覓覓了兩天終於被我找到這篇,apple的奇葩的bug 重現條件 iOS17 手機設定是繁體中文語系 前一個用過的鍵盤是Cangjie倉頡 or Suchen
2024/08/07
使用者回報的超級奇怪線上問題,用數字鍵盤(NumberPad)更改欄位時,送出後尾數都會消失。例如:30 ⭢ 3,52 ⭢ 5。 尋尋覓覓了兩天終於被我找到這篇,apple的奇葩的bug 重現條件 iOS17 手機設定是繁體中文語系 前一個用過的鍵盤是Cangjie倉頡 or Suchen
2024/07/03
這篇文章探討瞭如何在iOS應用程式中客製化Alert,包括改變字體大小、內嵌連結以及讓Alert的高度隨著字數增長並提供scroll操作。同時使用SwiftUI進行客製化,並介紹瞭解決高度超出範圍後文字捲動與scrollView固定高度的方法。
Thumbnail
2024/07/03
這篇文章探討瞭如何在iOS應用程式中客製化Alert,包括改變字體大小、內嵌連結以及讓Alert的高度隨著字數增長並提供scroll操作。同時使用SwiftUI進行客製化,並介紹瞭解決高度超出範圍後文字捲動與scrollView固定高度的方法。
Thumbnail
看更多
你可能也想看
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
高中數學主題練習—兩向量夾角
Thumbnail
高中數學主題練習—兩向量夾角
Thumbnail
高中數學主題練習—點與圓之關係
Thumbnail
高中數學主題練習—點與圓之關係
Thumbnail
本篇教學會詳細介紹條 (Bar) 的基本特性,以及在 UI 畫面上的應用,如拖曳、調整大小、空格限制等。此外,教學也針對不同的造型特性進行解說,包括橫向或縱向條、拖曳圖示 (thumb) 調整,以及無法滑動時的隱藏或顯示設定。
Thumbnail
本篇教學會詳細介紹條 (Bar) 的基本特性,以及在 UI 畫面上的應用,如拖曳、調整大小、空格限制等。此外,教學也針對不同的造型特性進行解說,包括橫向或縱向條、拖曳圖示 (thumb) 調整,以及無法滑動時的隱藏或顯示設定。
Thumbnail
高中數學主題練習—兩向量夾角
Thumbnail
高中數學主題練習—兩向量夾角
Thumbnail
高中數學主題練習—兩向量夾角
Thumbnail
高中數學主題練習—兩向量夾角
Thumbnail
UIEdgeInsets 是一個結構體,用來表示矩形的邊距。它通常在視圖佈局中使用,用於修改視圖的框架(frame)。邊距值可以是正數或負數,這會對矩形的大小產生不同的影響。 UIEdgeInsets 結構體 UIEdgeInsets 結構體包含四個屬性: top:矩形頂部的邊距 left:
Thumbnail
UIEdgeInsets 是一個結構體,用來表示矩形的邊距。它通常在視圖佈局中使用,用於修改視圖的框架(frame)。邊距值可以是正數或負數,這會對矩形的大小產生不同的影響。 UIEdgeInsets 結構體 UIEdgeInsets 結構體包含四個屬性: top:矩形頂部的邊距 left:
Thumbnail
在Excel中實作使用者介面(UI)是一個有趣且實用的技能,能夠幫助你更好地呈現資料、提供功能並增強使用者體驗。本文將逐步介紹如何在Excel中建立基本的UI元素,例如按鈕、下拉式選單和文字框,並擴展功能,例如資料驗證和動態更新。
Thumbnail
在Excel中實作使用者介面(UI)是一個有趣且實用的技能,能夠幫助你更好地呈現資料、提供功能並增強使用者體驗。本文將逐步介紹如何在Excel中建立基本的UI元素,例如按鈕、下拉式選單和文字框,並擴展功能,例如資料驗證和動態更新。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News