使用 Swift 宏进行编译时检查的 SF Symbol 名称
let package = Package(
name: "SymbolMacro",
platforms: [.iOS(.v13), .macOS(.v11), .tvOS(.v13), .watchOS(.v6), .macCatalyst(.v13)],
)
let symbolName = #symbol("figure.walk")
// Expands to:
let symbolName = "figure.walk"
let symbolName = #symbol("figure.eating.beans")
// Error: 1:18 invalid symbol name
let symbol = #symbolImage("figure.walk")
// Expands to:
let symbol = Image("figure.walk")
let symbol = #symbolImage("figure.eating.beans")
// Expands to:
// Error: 1:14 invalid symbol name
Symbol 的可用性基于编译 App 的设备的操作系统版本,而非 App 的目标部署版本。
可以使用硬编码的枚举案例访问 SF Symbols,例如:
这些提供了符号的内联自动补全,而 SymbolMacro
则与字符串字面量一起使用,这些字符串字面量可以使用 Xcode 符号库 (⌘⇧L) 进行搜索。SymbolMacro
避免了在新符号发布时需要等待第三方库更新的需求。