ユーザーに優しいSF Symbolsライブラリをリリースしました

2022.01.27

SF Symbolsユーザーに優しいSF Symbolsライブラリをリリースしましたので紹介致します。

SFUserFriendlySymbols

SFUserFriendlySymbols

SFUserFriendlySymbolsという名前のライブラリで、SF Symbols利用者に優しいライブラリです。

ユーザーに優しい点としては、

  • systemNameの直入力が不要
  • シンボルがターゲットOSで利用出来ない場合はXcodeがアラートを出してくれる

こちらの2点になります。

インストール方法

Swift Package Manager

  1. Xcode上で FileAdd Packages... を押します。
  2. 開かれたページの右上にある検索窓に https://github.com/littleossa/SFUserFriendlySymbols.gitを入力します。 searchbox
  3. SFUserFriendlySymbolsのパッケージが現れたら、Add Packageボタンを押します。
  4. 完了すると、packageが追加されます

使い方

まずはインポートを行なってください。

import SFUserFriendlySymbols

シンボルはSF Symbols v3.2の全3309個に対応しています。

UIKitでの使い方

face.smilingというシンボル名のものを使用したい場合を紹介します。

face-smiling

これらのシンボル名はライブラリの中のSFSymbolsというenumlower camel caseの形で変換されています。

// シンボル名 -> ライブラリの中で使用するシンボル
face.smiling -> faceSmiling

UIImage(symbol:)というinitメソッドを使用して、使いたいシンボルを呼び出すだけです。

let image = UIImage(symbol: .faceSmiling)

残念なことに、シンボルの中には数字から始まるシンボル名のものが存在しており、それらはそのままenumcaseに設定することは出来ません。

1Circle

なので、数字で始まるものに関しては、頭に_が付いた名前になっております。

let image = UIImage(symbol: ._1Circle)

SwiftUIでの使い方

SwiftUIにも対応しています。

UIKitと同じようにsymbolのパラメーターに使用したいシンボルを渡してあげるだけです。

Image(symbol: .faceSmiling)

何がユーザーフレンドリーなのか?

systemNameの直入力が不要になったことにより、タイプミスのような問題は発生しなくなったのは理解していただけたと思います。

次は、シンボルがターゲットOSで利用出来ない場合はXcodeがアラートを出してくれるという点について紹介します。

SF SymbolsはOS依存のものが多数あるため、「このOSの時は使える」「このOSの時は使えない」というものが発生していました。しかも、コードで記述する際は特にXcodeがアラートを出してくれるわけでもないので、nilとして出力されて初めて気づくというような状態でした。

このライブラリのSFSymbolsenumを使用する場合は、ターゲットOSで利用出来ない場合はアラートメッセージを出て、ビルドも失敗になります。

sfsymbols-alert

この機能により、SF Symbols愛好家の方達が少しでも幸せになればと思っています。

iOS 15からの新機能にも対応

パレットカラー、階層カラー、マルチカラーの設定も容易にできるようにしました。

今回はpcという名前のシンボルを例にしてお伝えします。

pc

パレットカラー

let image = UIImage(symbol: .pc, paletteColors: [.systemPink, .yellow])

palette-color

階層カラー

let image = UIImage(symbol: .pc, hierarchicalColor: .systemPink)

hierirchcal-color

マルチカラー

対象のシンボルがマルチカラー対応の場合は、マルチカラーを優先したシンボルイメージを生成します。

let image = UIImage(multiColoredSymbol: .pc)

multicolor

おわりに

初めてのSwift Packagesでライブラリを作成してみました。こちらのSwift Packagesでライブラリを自作する方法という記事のおかげで順調に進めていくことが出来ました。

一点、GitHub Actionsでハマってしまった箇所があったので今度深掘りしたいと思います。今回はCocoaPodsには対応していないので気が向けば対応しようかなと考えています。

せっかくなので、ここ最近書いたSFSymbolsの記事をまとめておきます。

引き続き、SF Symbolsで世界を平和にする計画を進めていきたいと思います。