Motivation • Installation • Usage • Contributing • License • Issues • Pull Requests
At WWDC 2019, Apple announced a new library of icons that come included with iOS 13. To browse them, there's even a dedicated Mac app called SF Symbols. However, developers still have to copy the name of an icon and reference it unsafely, resulting in code like this:
let image = UIImage(systemName: "circle.fill")
It didn't took long until first ideas came up to make these icons accessible in a safe way using a framework. And this is just what this framework does!
SFSafeSymbols can be installed via Swift Package Manager, Accio or Carthage:
To integrate using Apple's Swift package manager, add the following as a dependency to your Package.swift
:
.package(url: "https://github.com/piknotech/SFSafeSymbols.git", .upToNextMajor(from: "0.1"))
After specifying "SFSafeSymbols"
as a dependency of the target in which you want to use it, run swift package update
.
Do the same configurations as for Swift PM, then run accio update
instead of swift package update
.
Make the following entry in your Cartfile:
github "piknotech/SFSafeSymbols" ~> 0.1
Then run carthage update
.
All the system icons are accessible via the SFSymbol
enum. They are named similar to Apple's naming, but use a lower camel case style and prefix names with leading numbers with a _
character:
c.circle ==> SFSymbol.cCircle
e.circle.fill ==> SFSymbol.eCircleFill
11.circle.fill ==> SFSymbol._11CircleFill
You can now either create the corresponding UIImage
by initializing it using the SFSymbol
...
let image = UIImage(systemSymbol: .cCircle)
let image2 = UIImage(systemSymbol: .eCircleFill, withConfiguration: /* Some UIImage.Configuration */)
let image3 = UIImage(systemSymbol: ._11CircleFill, compatibleWith: /* Some UITraitCollection */)
... or by calling a function on your SFSymbol
instance:
let image = SFSymbol.cCircle.toImage
let image2 = SFSymbol.eCircleFill.toImage(withConfiguration: /* Some UIImage.Configuration */)
let image3 = SFSymbol._11CircleFill.toImage(compatibleWith: /* Some UITraitCollection */)
... or create a SwiftUI.Image
by initializing it using the SFSymbol
...
Image(systemSymbol: .cCircle)
All symbols are tested so you can be sure your code won't crash because an image couldn't be found!
Contributions are very much welcomed! See CONTRIBUTING.md for more information.
This library is released under the MIT License. See LICENSE.md for details.