SwiftUI 文字與圖示組合
在 SwiftUI 中,要在文字旁邊加入圖示有幾種常用方法。以下是三種主要的實現方式:
方法一:使用 Label(推薦)
Label 是 SwiftUI 專門設計用來組合文字與系統圖示的組件,語法最簡潔。
基本用法
Label("收藏", systemImage: "star.fill")
效果: ⭐ 收藏
自訂樣式
Label("設定", systemImage: "gear")
.font(.title2)
.foregroundColor(.blue)
方法二:使用 HStack 組合
當你需要更自由地控制圖示和文字的位置或樣式時,可以使用 HStack。
HStack {
Image(systemName: "heart.fill")
.foregroundColor(.red)
Text("喜歡")
}
調整間距
HStack(spacing: 8) {
Image(systemName: "person.fill")
.foregroundColor(.blue)
Text("使用者資料")
}
方法三:在 Text 中嵌入 Image
這種方法比較少見,但在某些情況下很方便。
Text(Image(systemName: "person.fill")) + Text(" 使用者")
效果: 👤 使用者
常用系統圖示
SwiftUI 提供了豐富的系統圖示,你可以在以下地方查看完整的圖示庫:
- SF Symbols 官方網站: https://developer.apple.com/sf-symbols/
- Xcode 內建圖示選擇器: 在程式碼中輸入
systemImage:時會自動顯示
常用圖示範例
// 導航相關
Label("首頁", systemImage: "house")
Label("設定", systemImage: "gear")
Label("搜尋", systemImage: "magnifyingglass")
// 操作相關
Label("收藏", systemImage: "star.fill")
Label("喜歡", systemImage: "heart.fill")
Label("分享", systemImage: "square.and.arrow.up")
// 狀態相關
Label("成功", systemImage: "checkmark.circle.fill")
Label("警告", systemImage: "exclamationmark.triangle")
Label("錯誤", systemImage: "xmark.circle.fill")
最佳實踐
- 優先使用
Label:對於簡單的文字+圖示組合 - 使用
HStack:當需要自訂間距或複雜樣式時 - 保持一致性:在整個應 用程式中使用相同的圖示風格
- 考慮無障礙:
Label自動提供適當的無障礙支援