SwiftUIのフォント
SwiftUIにおいて文字のフォントを指定したいときは、以下のようにフォント名を文字列として入力します。
SampleText.swift
import SwiftUI
struct ContentView: View {
var body: some View {
Text("Hello,World!")
.font(.custom("AcademyEngravedLetPlain", size: 100))
}
}
ただ、毎回コピペしたり正しい名前になっているか確認するのは面倒ですし、名前を間違えてしまう可能性もあります。
また、デザインに合うフォントを色々試してみたいときにも切り替えが早い方が効率的です。
改善策
以下のようなextension
を用いると比較的ラクにフォント名の指定ができるようになります。例のように「タイトル用」などとコメントを残しておくと後で使うときに迷わずに済みます。
FontExtension.swift
extension Font {
enum Keys: String {
case AcademyEngravedLetPlain
case AlNile
///タイトル用
case Damascus
}
static func namedFont(_ name: Keys, size: CGFloat) -> Font {
return Font.custom(name.rawValue, size: size)
}
}
使用例
SampleText.swift
import SwiftUI
struct ContentView: View {
var body: some View {
Text("Hello,World!")
.font(.namedFont(.AcademyEngravedLetPlain, size: 100))
}
}
コードの見た目や長さはほとんど同じですが、Xcodeならコード補完で正確にフォント名を指定できるようになります。
余談
同様の意図で実装の仕方を調べるとカスタムModifierを用いたものが紹介されていることが多いです。
そちらでも問題はないのですが、今回紹介したextension
を用いる方法だとフォントに対して変更を加えたことが明示的になるので、多人数開発のときには少しだけ便利かな...と思います。