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
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
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上面,我覺得好用又好看的歐文字體。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News