首页 > 解决方案 > UIFont(name: UIFont.systemFont(ofSize: 10).fontName, size: 10)?.fontName == UIFont.systemFont(ofSize: 10).fontName 在 iOS13 中为 false

问题描述

我尝试使用系统字体的字体名称创建一个 UIFont 实例。


enum Font {

    static var scaleFactor: CGFloat = 1.0

    case system(_ size: CGFloat)
    case systemBold(_ size: CGFloat)

    var dynamic: UIFont {
        switch self {
        case let .system(size):
            return UIFont(name: UIFont.systemFont(ofSize: 1).fontName, size: size * Font.scaleFactor)!
        case let .systemBold(size):
            return UIFont(name: UIFont.boldSystemFont(ofSize: 1).fontName, size: size * Font.scaleFactor)!
        }
    }
}
// UIFont.systemFont(ofSize: 10).fontName -> ".SFUI-Regular"
// but UIFont(name: UIFont.systemFont(ofSize: 10).fontName, size: 10)?.fontName -> "TimesNewRomanPSMT"
// and also UIFont(name: ".SFUI-Regular", size: 10)?.fontName -> "TimesNewRomanPSMT"

这样,我得到了另一种名为“TimesNewRomanPSMT”的字体,仅用于系统字体。我认为它在 iOS13 之前运行良好。我在 macOS 10.15 beta 上使用 Xcode 11.0

标签: iosarraysuifont

解决方案


推荐阅读