在SwiftUI中更改默认系统字体

时间:2019-11-13 17:36:23

标签: swiftui

我正在尝试在SwiftUI应用中设置自定义默认字体。我尝试了来自该线程Set a default font for whole iOS app?的一些建议。

但是,这些似乎都无法与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

启动应用程序时,自定义字体会显示一秒钟,然后由Apple更改回默认字体。为什么将其改回Apple的字体,以及如何永久完成呢?

Text-View上进行扩展可能吗?

1 个答案:

答案 0 :(得分:0)

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

Font.custom("Font-Family-Name", size: fontSize)

示例:

Text("Testing")
.font(Font.custom("Font-Family-Name", size: 16))

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

导入 SwiftUI

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

现在您可以像这样在应用中的任何地方使用它们:

Text("Testing")
.font(AppFont.commonFont(fontSize: 16))