Merge pull request #1 from rursache/main SFSymbols 4.0 + improvements
Merge pull request #1 from rursache/main
SFSymbols 4.0 + improvements
A swift package to have SF Symbols available as enum instead of verbatim strings.
You can write now:
Image(systemImage:.person) Label("Text",systemImage:.zlRectangleRoundedtopFill)
Or to see a list of all available symbols
struct SwiftUIView: View { var body: some View { VStack { List(SFSymbol.allCases,id:\.name) { symbol in Label(symbol.name,systemImage:symbol) } } } }
import SFSymbolEnum
functions that are using the systemImage argument can be used as before, but instead with the dot notation. Symbol names translate to enums by replacing dots notation to camelcase and prefixing starting numbers with number.
Examples:
Image(systemName:"arrow.down.left.circle.fill") Image(systemName:"0.circle") Image(systemName:"arrow.2.circlepath.circle")
becomes to:
Image(systemName:.arrowDownLeftCircleFill) Image(systemName:.number0Circle) Image(systemName:.arrow2CirclepathCircle)
The code itself has been created with the name_availablity.plist inside the SF Symbols application and looks like this
public enum SFSymbol:String // this enum will be generated { @available(iOS 13.0,macOS 10.15,tvOS 13.0,watchOS 6.0,*) case number0Circle = "0.circle" @available(iOS 13.0,macOS 10.15,tvOS 13.0,watchOS 6.0,*) case number0CircleFill = "0.circle.fill" ... } extension SFSymbol:CaseIterable { public static var allCases:[SFSymbol] { var allCases:[SFSymbol] = [] if #available(iOS 13.0,macOS 10.15,tvOS 13.0,watchOS 6.0,*){ allCases.append(SFSymbol.number0Circle) } if #available(iOS 13.0,macOS 10.15,tvOS 13.0,watchOS 6.0,*){ allCases.append(SFSymbol.number0CircleFill) } ... return allCases } }
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
SFSymbolEnum
A swift package to have SF Symbols available as enum instead of verbatim strings.
You can write now:
Or to see a list of all available symbols
Advantages
Installation
Usage
functions that are using the systemImage argument can be used as before, but instead with the dot notation. Symbol names translate to enums by replacing dots notation to camelcase and prefixing starting numbers with number.
Examples:
becomes to:
How it’s done
The code itself has been created with the name_availablity.plist inside the SF Symbols application and looks like this