SwiftUI Text 與 Label 教學
Text 是 SwiftUI 中最基礎也最常用的元件,用於在畫面上顯示一行或多行唯讀文字。雖然它看起來簡單,但透過 Modifier,你可以將它變得很華麗。
基礎用法
最簡單的用法就是直接傳入一個字串:
Text("Hello, SwiftUI!")
常用的文字修飾符 (Text Modifiers)
你可以透過鏈式調用來改變文字的樣式:
Text("設計你的文字")
.font(.title) // 設定字型大小 (使用動態字體標準)
.fontWeight(.bold) // 設定字重 (粗體)
.foregroundColor(.blue) // 設定顏色
.italic() // 斜體
.underline() // 底線
.strikethrough() // 刪除線
字型與大小 (Font)
SwiftUI 推薦使用動態字體 (Dynamic Type) 樣式,例如 .largeTitle, .title, .headline, .body, .caption 等。這樣做的好處是,當使用者在 iOS 系統設定中調整字體大小時,你的 App 也會自動跟著縮放,符合無障礙設計 (Accessibility) 的要求。
如果你必須使用固定大小或自定義字體:
Text("固定大小文字")
.font(.system(size: 24)) // 系統字體,大小 24
Text("自定義字體")
.font(.custom("HelveticaNeue", size: 20)) // 指定字體名稱
多行文字與截斷
預設情況下,Text 會盡量顯示所有內容。如果空間不足,它會自動換行。你可以控制這些行為:
Text("這是一段非常非常長的文字,可能會佔用很多行空間。")
.lineLimit(2) // 限制最多顯示 2 行
.multilineTextAlignment(.center) // 多行對齊方式 (置中)
.truncationMode(.tail) // 截斷模式 (省略號在尾端: ...xyz)
Markdown 支援 (iOS 15+)
SwiftUI 的 Text 直接支援部分的 Markdown 語法!這讓你可以輕鬆地在一段文字中混合樣式,而不需要拆成多個 Text。
Text("這是一段 **粗體** 和 *斜體* 的文字,還可以加上 [連結](https://www.fooish.com)。")
這樣寫,"粗體" 會自動變粗,"斜體" 會變斜,"連結" 則會變成可點擊的藍色文字。
Label (標籤)
Label 是一個結合了「圖示 (Icon)」與「文字 (Text)」的元件,非常常用於列表 (List) 或選單 (Menu) 中。
Label("設定", systemImage: "gear")
這段程式碼會顯示一個齒輪圖示旁邊跟著 "設定" 兩個字。systemImage 使用的是 Apple 的 SF Symbols 圖示庫。
自定義 Label 樣式
你可以透過 .labelStyle 修改圖示與文字的相對位置:
Label("喜歡", systemImage: "heart.fill")
.labelStyle(.iconOnly) // 只顯示圖示
.labelStyle(.titleOnly) // 只顯示文字
// 預設是 .titleAndIcon (兩者都顯示)
掌握了 Text 和 Label,你已經可以處理 App 中大部分的資訊顯示需求了。接下來,我們看看如何處理圖片。