【问题标题】:Getting Black Italic system font from UIFont从 UIFont 获取 Black Italic 系统字体
【发布时间】:2018-08-01 10:10:50
【问题描述】:

我似乎找不到获得“SF Pro Display Heavy Italic”字体的方法。

UIFont.systemFont(ofSize: CGFloat, weight: UIFont.Weight) 但这只会让我得到所有非斜体字重。

UIFont.italicSystemFont(ofSize: CGFloat) 但这只会让我得到“斜体常规”

我想要特定粗细的斜体系统字体(旧金山专业版)

或者获取非系统字体UIFont(name: String, size: CGFloat) 之类的字体?这似乎相当笨拙。

【问题讨论】:

标签: ios swift uikit uifont


【解决方案1】:

看一下,我使用这样的类别也是出于类似的原因。

extension UIFont {

     static func systemFont(ofSize: CGFloat, weight: UIFont.Weight, traits: UIFontDescriptorSymbolicTraits) -> UIFont? {
         let font = UIFont.systemFont(ofSize: ofSize, weight: weight)

         if let descriptor = font.fontDescriptor.withSymbolicTraits(traits) {
             return UIFont(descriptor: descriptor, size: ofSize)
         }

         return nil
     }
}

【讨论】:

    【解决方案2】:

    上面的代码确实有效,但一个棘手的部分是粗斜体字体,你需要使用 (UIFontDescriptorTraitItalic | UIFontDescriptorTraitBold) 作为特征,而不仅仅是 UIFontDescriptorTraitItalic。

    这适用于 Semibold、Bold、Heavy 和 Black 字体(全部为斜体)。

    【讨论】:

      猜你喜欢
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 2014-04-05
      • 2011-10-31
      • 2014-12-21
      • 2017-09-27
      • 1970-01-01
      相关资源
      最近更新 更多