SF Symbols 基礎指南:Apple 設計語言的視覺符號系統

更新 發佈閱讀 15 分鐘

作為一名 iOS 開發者,過去我們總是在處理各種尺寸(@1x@2x@3x)的點陣圖和應對無盡的微調中循環往復。任何顏色的變更或線條的粗細調整,都意味著一次繁瑣的「匯出-匯入」流程。

SF Symbols 的出現,為我們提供了一套共享的「視覺語言」。設計師只需標註符號名稱,如 gearshape.fill,開發者便能用一行程式碼實現,並在程式中動態調整顏色、字重與大小。這種與系統字體 San Francisco 無縫整合的模式,不僅大幅提升了開發效率,更確保了圖示與文字在視覺上的完美和諧,讓我們的 App 能輕易達到 Apple 等級的設計質感。

而這套強大的符號系統,其實早已融入你我生活中的每個角落。每當打開 Apple 裝置,你是否曾注意到那些精美、一致且富有表現力的小圖示?從 iOS 的主畫面、macOS 的選單列到 watchOS 的複雜功能,它們不僅美觀,更與 Apple 生態系統完美契合。

這些,正是 SF Symbols 的魅力所在。

SF Symbols 是 Apple 於 2019 年推出的一套 icon library,專為旗下所有平台設計。它不僅僅是圖片檔案,更是一套與系統字體 San Francisco 無縫整合的設計語言,確保符號在任何尺寸和字重下都能保持清晰與和諧。

在這篇文章中,我們將帶你探索 SF Symbols 的世界,提升 App 的設計質感與開發效率。


什麼是 SF Symbols? 

SF Symbols 是 Apple 設計的 icon library,專為 iOS、iPadOS、macOS、tvOS 和 watchOS 平台設計。與傳統的點陣圖示不同,SF Symbols 是向量圖形,這意味著它們可以無損縮放到任何尺寸。

核心特色 

1. 無縫整合 San Francisco 字體

SF Symbols 的設計與 Apple 系統字體 San Francisco 完美對齊,包括 baseline、x-height 和其他字體測量標準。這確保了文字和符號的視覺和諧。

2. Font Weight支援

就像 San Francisco 字體有不同的字重一樣,SF Symbols 也提供了 9 種不同的 font weight:

  • Ultralight
  • Thin
  • Light
  • Regular
  • Medium
  • Semibold
  • Bold
  • Heavy
  • Black

3. 可配置性

每個符號都可以調整大小、顏色、透明度等屬性,讓開發者能根據設計需求進行客製化。

4. 多國語言支援

SF Symbols 7 開始支援多國語言的變體,確保符號在不同文化背景下都能正確表達意思。


在 Xcode 中使用 SF Symbols 

基本使用方式 

在 SwiftUI 中使用 SF Symbols 非常簡單:

import SwiftUI

struct ContentView: View {
var body: some View {
VStack(spacing: 20) {
// 基本符號
Image(systemName: "heart.fill")
.font(.largeTitle) // 調整大小
.foregroundColor(.red) // 調整顏色
}
}
}

在 UIKit 中的使用方式:

import UIKit

class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()

// 建立 SF Symbol 圖片
let heartImage = UIImage(systemName: "heart")
let heartFilledImage = UIImage(systemName: "heart.fill")

// 設定 ImageView
let imageView = UIImageView(image: heartImage)
imageView.tintColor = .systemRed

// 調整 Config
let config = UIImage.SymbolConfiguration(pointSize: 30, weight: .bold)
let configuredImage = UIImage(systemName: "heart.fill", withConfiguration: config)
}
}

Symbol Configuration 

SF Symbols 提供了強大的 Config System,讓你能精確控制符號的外觀:

// 設定大小和 font weight
let config = UIImage.SymbolConfiguration(pointSize: 24, weight: .semibold)

// 設定比例尺
let scaleConfig = UIImage.SymbolConfiguration(scale: .large)

// 設定文字樣式
let textStyleConfig = UIImage.SymbolConfiguration(textStyle: .headline)

// 組合多個 config
let combinedConfig = config.applying(scaleConfig)

// 套用 config
let image = UIImage(systemName: "gear", withConfiguration: combinedConfig)

SF Symbols 7.0 新功能 

Draw 動畫 

Draw 動畫讓符號看起來像是被逐步繪製出來,創造出生動的視覺效果:

import SwiftUI

struct DrawAnimationView: View {
@State private var isDrawing = false

var body: some View {
Image(systemName: "heart")
.font(.system(size: 100))
.symbolEffect(.drawline, isActive: isDrawing)
.onTapGesture {
isDrawing.toggle()
}
}
}

變量渲染 (Variable Rendering) 

某些符號支援變量渲染,可以顯示不同的填充程度或狀態:

struct VariableRenderingView: View {
@State private var progress: Double = 0.5

var body: some View {
VStack {
Image(systemName: "wifi", variableValue: progress)
.font(.system(size: 50))

Slider(value: $progress, in: 0...1)
.padding()
}
}
}

Magic Replace 

Magic Replace 功能讓符號之間的轉換更加平滑自然:

struct MagicReplaceView: View {
@State private var isPlaying = false

var body: some View {
Image(systemName: isPlaying ? "pause.fill" : "play.fill")
.font(.system(size: 50))
.symbolEffect(.replace, isActive: isPlaying)
.onTapGesture {
isPlaying.toggle()
}
}
}

漸層效果 

SF Symbols 7.0 支援多種漸層效果:

struct GradientSymbolView: View {
var body: some View {
VStack(spacing: 30) {
Image(systemName: "heart.fill")
.font(.system(size: 50))
.foregroundStyle(
LinearGradient(
colors: [.red, .pink],
startPoint: .topLeading,
endPoint: .bottomTrailing
)
)

Image(systemName: "star.fill")
.font(.system(size: 50))
.foregroundStyle(
RadialGradient(
colors: [.yellow, .orange],
center: .center,
startRadius: 5,
endRadius: 25
)
)
}
}
}

符號修飾器 

SF Symbols 支援多種修飾器來改變符號的外觀:

struct SymbolModifiersView: View {
var body: some View {
VStack(spacing: 20) {
// 基本符號
Image(systemName: "heart")

// 填充版本
Image(systemName: "heart.fill")

// 圓圈版本
Image(systemName: "heart.circle")

// 圓圈填充版本
Image(systemName: "heart.circle.fill")

// 正方形版本
Image(systemName: "heart.square")

// 正方形填充版本
Image(systemName: "heart.square.fill")
}
.font(.title)
}
}

結語 

SF Symbols 不僅僅是一套圖示庫,更是 Apple 設計哲學的體現。它提供了一致、美觀且功能豐富的視覺元素,讓開發者能夠輕鬆打造出符合 Apple 設計標準的 App。

從基本的符號使用到進階的動畫效果,從標準符號到客製化設計,SF Symbols 為開發者提供了無限的可能性。隨著每次更新,Apple 都在持續改進和擴展這套系統,讓它變得更加強大和靈活。

無論你是剛開始接觸 iOS 開發的新手,還是經驗豐富的開發者,掌握 SF Symbols 的使用技巧都能讓你的 App 在視覺設計上更上一層樓。

記住,好的設計不在於使用了多少華麗的效果,而在於如何恰到好處地傳達資訊,提升用戶體驗。SF Symbols 正是幫助你達成這個目標的強大工具。

現在就開始探索 SF Symbols 的世界吧!下載 SF Symbols app,在你的專案中嘗試不同的符號和效果,讓你的 App 散發出純正的 Apple 風格!


參考資料 

留言
avatar-img
留言分享你的想法!
avatar-img
Rice把拔的生活與開發筆記
0會員
25內容數
這裡是我的開發與生活筆記。 分享iOS開發經驗、教學技巧,也記錄生活中的點滴與觀察。 偶爾來點評論,輕鬆聊聊技術與日常。
2025/07/16
Swift Forums 宣布 Android Workgroup 的計畫後,對 Mobile App Development 生態造成了什麼樣的變化?
Thumbnail
2025/07/16
Swift Forums 宣布 Android Workgroup 的計畫後,對 Mobile App Development 生態造成了什麼樣的變化?
Thumbnail
2025/07/09
介紹 Apple 原生的 Swift Package Manager,了解基本架構與特性。
Thumbnail
2025/07/09
介紹 Apple 原生的 Swift Package Manager,了解基本架構與特性。
Thumbnail
2025/07/02
本文介紹臺灣 Open Data 的資源,實作一個簡單的 API Service,並封裝在Swift Package Manager中,方便在其他專案使用。從建立Swift Package Manager專案,到呼叫資料,最後將完成的專案公開於GitHub上。
Thumbnail
2025/07/02
本文介紹臺灣 Open Data 的資源,實作一個簡單的 API Service,並封裝在Swift Package Manager中,方便在其他專案使用。從建立Swift Package Manager專案,到呼叫資料,最後將完成的專案公開於GitHub上。
Thumbnail
看更多
你可能也想看
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
視覺層級並不侷限於平面設計,在用戶體驗及介面上更是一個重要的核心之一。視覺層級除了讓畫面的視覺編排更加精緻好看,更重要的功能是能讓畫面有效地被組織,讓觀者更容易理解。
Thumbnail
視覺層級並不侷限於平面設計,在用戶體驗及介面上更是一個重要的核心之一。視覺層級除了讓畫面的視覺編排更加精緻好看,更重要的功能是能讓畫面有效地被組織,讓觀者更容易理解。
Thumbnail
CSS入門-Day3 的主要內容包括字體大小、字體顏色、字體系列、字體樣式、字體粗細等屬性。此外,還涵蓋了文本對齊、行高、文字間距、單詞間距和文本裝飾。最後,介紹了如何引入和使用 Google 字體,以提高網頁的排版效果。
Thumbnail
CSS入門-Day3 的主要內容包括字體大小、字體顏色、字體系列、字體樣式、字體粗細等屬性。此外,還涵蓋了文本對齊、行高、文字間距、單詞間距和文本裝飾。最後,介紹了如何引入和使用 Google 字體,以提高網頁的排版效果。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
本文探討2024年UI/UX設計趨勢,包括深色模式和色彩適應性、微互動和動畫、3D元素與虛擬現實整合,以及以用戶為中心的數據驅動設計、無障礙設計和情感設計的新方法。
Thumbnail
本文探討2024年UI/UX設計趨勢,包括深色模式和色彩適應性、微互動和動畫、3D元素與虛擬現實整合,以及以用戶為中心的數據驅動設計、無障礙設計和情感設計的新方法。
Thumbnail
Creative Coding 作品變化概念,有或沒有的差別,隨機性,色彩模式的調整...等
Thumbnail
Creative Coding 作品變化概念,有或沒有的差別,隨機性,色彩模式的調整...等
Thumbnail
【設計素材】Google Fonts Icons 這個網站是 Google Fonts 的「Icons」頁面,提供了免費的字型,其中的 Material Symbols 圖示字型,這組字型收錄了超過三千個圖示 icon。在這組圖示中,還提供了多款可調整的樣式,包含了不同粗細組合,您可以直接
Thumbnail
【設計素材】Google Fonts Icons 這個網站是 Google Fonts 的「Icons」頁面,提供了免費的字型,其中的 Material Symbols 圖示字型,這組字型收錄了超過三千個圖示 icon。在這組圖示中,還提供了多款可調整的樣式,包含了不同粗細組合,您可以直接
Thumbnail
分享一些Googlefonts上面,我覺得好用又好看的歐文字體。
Thumbnail
分享一些Googlefonts上面,我覺得好用又好看的歐文字體。
Thumbnail
程式設計中不可或缺的一部分 介面是使用者與程式互動的媒介,因此介面的設計會影響使用者的體驗和感受。一個清晰明白、易懂的介面,可以讓使用者輕鬆地使用程式,並獲得良好的使用體驗。 需要與程式設計師密切溝通 設計師需要了解程式的功能和需求,並根據使用者的習慣和需求進行設計。設計師和程式設計師之間的溝
Thumbnail
程式設計中不可或缺的一部分 介面是使用者與程式互動的媒介,因此介面的設計會影響使用者的體驗和感受。一個清晰明白、易懂的介面,可以讓使用者輕鬆地使用程式,並獲得良好的使用體驗。 需要與程式設計師密切溝通 設計師需要了解程式的功能和需求,並根據使用者的習慣和需求進行設計。設計師和程式設計師之間的溝
Thumbnail
在數位設計的世界中,我們總是被色彩所包圍,而其中一個關鍵的元素就是色彩描述檔(又稱:描述檔、ICC色彩描述檔)。 它是一個將印表機、螢幕等裝置具備的色域資訊數值化的檔案唷!或許你也曾經思考過,當我們看到[R:0/G:0/B:255]或是[C:100%/M:100%/Y:0%]這樣的數值時,心中
Thumbnail
在數位設計的世界中,我們總是被色彩所包圍,而其中一個關鍵的元素就是色彩描述檔(又稱:描述檔、ICC色彩描述檔)。 它是一個將印表機、螢幕等裝置具備的色域資訊數值化的檔案唷!或許你也曾經思考過,當我們看到[R:0/G:0/B:255]或是[C:100%/M:100%/Y:0%]這樣的數值時,心中
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News