ユーザーに優しいSF Symbolsライブラリをリリースしました
SF Symbolsユーザーに優しいSF Symbolsライブラリをリリースしましたので紹介致します。
SFUserFriendlySymbols
SFUserFriendlySymbolsという名前のライブラリで、SF Symbols利用者に優しいライブラリです。
ユーザーに優しい点としては、
- systemNameの直入力が不要
- シンボルがターゲットOSで利用出来ない場合はXcodeがアラートを出してくれる
こちらの2点になります。
インストール方法
Swift Package Manager
- Xcode上で
File
→Add Packages...
を押します。 - 開かれたページの右上にある検索窓に
https://github.com/littleossa/SFUserFriendlySymbols.git
を入力します。 SFUserFriendlySymbols
のパッケージが現れたら、Add Package
ボタンを押します。- 完了すると、packageが追加されます
使い方
まずはインポートを行なってください。
import SFUserFriendlySymbols
シンボルはSF Symbols v3.2
の全3309個に対応しています。
UIKitでの使い方
face.smiling
というシンボル名のものを使用したい場合を紹介します。
これらのシンボル名はライブラリの中のSFSymbols
というenum
にlower camel caseの形で変換されています。
// シンボル名 -> ライブラリの中で使用するシンボル face.smiling -> faceSmiling
UIImage(symbol:)
というinitメソッドを使用して、使いたいシンボルを呼び出すだけです。
let image = UIImage(symbol: .faceSmiling)
残念なことに、シンボルの中には数字から始まるシンボル名のものが存在しており、それらはそのままenum
のcase
に設定することは出来ません。
なので、数字で始まるものに関しては、頭に_
が付いた名前になっております。
let image = UIImage(symbol: ._1Circle)
SwiftUIでの使い方
SwiftUIにも対応しています。
UIKit
と同じようにsymbolのパラメーターに使用したいシンボルを渡してあげるだけです。
Image(symbol: .faceSmiling)
何がユーザーフレンドリーなのか?
systemNameの直入力が不要になったことにより、タイプミスのような問題は発生しなくなったのは理解していただけたと思います。
次は、シンボルがターゲットOSで利用出来ない場合はXcodeがアラートを出してくれるという点について紹介します。
SF SymbolsはOS依存のものが多数あるため、「このOSの時は使える」「このOSの時は使えない」というものが発生していました。しかも、コードで記述する際は特にXcodeがアラートを出してくれるわけでもないので、nil
として出力されて初めて気づくというような状態でした。
このライブラリのSFSymbols
のenum
を使用する場合は、ターゲットOSで利用出来ない場合はアラートメッセージを出て、ビルドも失敗になります。
この機能により、SF Symbols愛好家の方達が少しでも幸せになればと思っています。
iOS 15からの新機能にも対応
パレットカラー、階層カラー、マルチカラーの設定も容易にできるようにしました。
今回はpc
という名前のシンボルを例にしてお伝えします。
パレットカラー
let image = UIImage(symbol: .pc, paletteColors: [.systemPink, .yellow])
階層カラー
let image = UIImage(symbol: .pc, hierarchicalColor: .systemPink)
マルチカラー
対象のシンボルがマルチカラー対応の場合は、マルチカラーを優先したシンボルイメージを生成します。
let image = UIImage(multiColoredSymbol: .pc)
おわりに
初めてのSwift Packagesでライブラリを作成してみました。こちらのSwift Packagesでライブラリを自作する方法という記事のおかげで順調に進めていくことが出来ました。
一点、GitHub Actionsでハマってしまった箇所があったので今度深掘りしたいと思います。今回はCocoaPods
には対応していないので気が向けば対応しようかなと考えています。
せっかくなので、ここ最近書いたSFSymbolsの記事をまとめておきます。
- 「SF Symbolsの楽しみ方」というタイトルで登壇しました
- 【Swift】iOS15から使えるSF Symbolsに複数のカラーを設定する方法
- 【Swift】SF Symbolsのシンボル名をenumに変換するアプリを作ってみた
- SF Symbolsの対応OSを確認する方法
引き続き、SF Symbolsで世界を平和にする計画を進めていきたいと思います。