在 SwiftUI 中更改默认系统字体

sim*_*bac 7 swiftui

我正在尝试在我的 SwiftUI 应用程序中设置自定义默认字体。我尝试了这个线程的几个建议为整个 iOS 应用程序设置默认字体?.

但是,这些似乎都不适用于 SwiftUI。例如使用这种方法:

// Constants.swift
struct Fonts {
    static var plex = "IBMPlexMono-Text"
}


// FontExtension.swift
extension UILabel {
    var substituteFontName : String {
        get { return self.font.fontName }
        set { self.font = UIFont(name: Fonts.plex, size: 17)! }
    }

}

// AppDelegate.swift in didFinishLaunchingWithOptions-function
UILabel.appearance().substituteFontName = Fonts.plex
Run Code Online (Sandbox Code Playgroud)

当我启动应用程序时,自定义字体会出现一瞬间,然后变回 Apple 的默认字体。为什么它会变回苹果的字体,如何永久完成?

是否可以在Text-View上进行扩展?

Shi*_*jaj -1

您可以使用这样的自定义字体:

Font.custom("Font-Family-Name", size: fontSize)
Run Code Online (Sandbox Code Playgroud)

例子:

Text("Testing")
.font(Font.custom("Font-Family-Name", size: 16))
Run Code Online (Sandbox Code Playgroud)

要在应用程序中的任何位置使用该字体,请创建如下结构。确保在包含字体结构的文件中导入 SwiftUI,如下所示:

导入 SwiftUI

struct AppFont {
    static func commonFont(fontSize: CGFloat) -> Font {
        return Font.custom("Font-Family-Name", size: fontSize)
    }
}
Run Code Online (Sandbox Code Playgroud)

现在您可以在应用程序中的任何位置使用它们,如下所示:

Text("Testing")
.font(AppFont.commonFont(fontSize: 16))
Run Code Online (Sandbox Code Playgroud)