web-dev-qa-db-ja.com

iOS 13でのSanFrancisco(.SFUIText、.SFUI-Regular)フォントの問題

IOS 13にアップデートした後、フォントが失敗しました。私のApp.xamlで:

<OnPlatform x:Key="FontFamilyRegular" x:TypeArguments="x:String">
   <On Platform="iOS">.SFUIText</On>
</OnPlatform>
<OnPlatform x:Key="FontFamilyMedium" x:TypeArguments="x:String">
   <On Platform="iOS">.SFUIText-Medium</On>
</OnPlatform>
<OnPlatform x:Key="FontFamilyBold" x:TypeArguments="x:String">
   <On Platform="iOS">.SFUIText-Semibold</On>
</OnPlatform>

デバイスをiOS 13に更新するまでは、すべてうまくいきました。

私はiOSプロジェクトをデバッグし、フォント名が.SFUI-Regular、.SFUI-Semiboldに変更される可能性があることを発見しました-しかし、これらはどちらも機能しません。また、最新のXamarinバージョンに更新してみましたが、うまくいきませんでした。

これらの3つのフォントファミリーを最新のiOSバージョンで使用するにはどうすればよいですか?

9

このようなシステムフォントは、次のように「ドット」/ .表記で参照可能になりました。

https://developer.Apple.com/videos/play/wwdc2019/227/

IOS 13以降、regularroundedserifまたはmonospacedを使用して、新しい列挙型UIFontDescriptor.SystemDesignを利用できます。

Swiftの記述子を使用してフォントを作成する方法の例(designパラメータの使用方法を参照):

extension UIFont {

    convenience init?(
        style: UIFont.TextStyle,
        weight: UIFont.Weight = .regular,
        design: UIFontDescriptor.SystemDesign = .default) {

        guard let descriptor = UIFontDescriptor.preferredFontDescriptor(withTextStyle: style)
            .addingAttributes([UIFontDescriptor.AttributeName.traits: [UIFontDescriptor.TraitKey.weight: weight]])
            .withDesign(design) else {
                return nil
        }
        self.init(descriptor: descriptor, size: 0)
    }
}

4
Ash Cameron