1. 程式人生 > 其它 >SwiftUI 簡明教程之佈局優先順序與檢視理想尺寸

SwiftUI 簡明教程之佈局優先順序與檢視理想尺寸

本文為 Eul 樣章,如果您喜歡,請移步 AppStore/Eul 檢視更多內容。

Eul 是一款 SwiftUI & Combine 教程 App(iOS、macOS),以文章(文字、圖片、程式碼)配合真機示例(Xcode 12+、iOS 14+,macOS 11+)的形式呈現給讀者。筆者意在儘可能使用簡潔明瞭的語言闡述 SwiftUI & Combine 相關的知識,使讀者能快速掌握並在 iOS 開發中實踐。

layoutPriority

layoutPriority 可以使我們手動控制檢視的佈局優先順序。我們看看如下程式碼:

HStack {
  Text("Hello")
  Text("World")
  Text("Stay Hungry, Stay Foolish")
     // .layoutPriority(1)
}
.lineLimit(1)
.font(.title3)

在不開啟註釋處的程式碼時,最後的 Text 文字是會被壓縮顯示成省略號的。系統預設所有 View 的 layoutPriority 都是 0。如果我們將註釋開啟,賦予最後的 Text 較高的優先順序,那麼最後的 Text 就可以完全展示出來,而前面的兩個 Text 可能會因為空間不足而被壓縮。

fixedSize

fixedSize 可以將試圖調整為理想的尺寸,比如我們有如下檢視:

Text("Stay Hungry, Stay Foolish")
  //.fixedSize()
  .font(.title)
  .frame(width: 200, height: 50)
  .border(Color.blue)
  .centerHorizontal()

在沒有使用 fixedSize 的情況下,文字會被壓縮,因為 200 * 50 的空間不足以展示所有文字。如果我們將註釋處的程式碼開啟,文字就可以完全展示了,因為 SwiftUI 會為該檢視調整最理想的尺寸。

fixedSize 還能指定調整的方向:

func fixedSize(horizontal: Bool, vertical: Bool) -> some View

Bool 值為 true 時,表示要調整該方向上的尺寸。

本文為 Eul 樣章,如果您喜歡,請移步 AppStore/Eul 檢視更多內容。