SwiftUIで Textのフォント指定にUIFontが使えない

Text() のフォント指定にUIFontが使えなかった。どうしたらよいのか?

実行環境

  • Xcode 11.6
  • iOS 13.6

問題の挙動

UIFont.futuraMediumFont(ofSize:) のようにカスタムフォントを使いやすくするユーティリティクラスを作成している。

import UIKit

extension UIFont {
    
    static func futuraMediumFont(ofSize size: CGFloat) -> UIFont {
        return UIFont(name: "Futura-Medium", size: size) ?? UIFont.systemFont(ofSize: size, weight: .medium)
    }
}

このフォントを下記のようにTextのフォント指定に使いたかったがビルドエラーが発生する。

Text(R.string.localizable.home_title()).font(UIFont.futuraMediumFont(ofSize: 22)

解決編

SwiftUIでは UIFontは使えないので、かわりに Fontクラスを使う。

import SwiftUI

extension Font {
    
    static func futuraMedium(size: CGFloat) -> Font {
        return Font.custom("Futura-Medium", size: size)
    }
}