从UIFont获取黑色斜体系统字体

3
我似乎找不到获取“SF Pro Display Heavy Italic”字体的方法。
UIFont.systemFont(ofSize: CGFloat, weight: UIFont.Weight),但它只能获取所有非斜体字重。
UIFont.italicSystemFont(ofSize: CGFloat),但它只能获取“Italic Regular”。 我想要斜体系统字体的特定字重(San Francisco Pro) 或者像非系统字体一样获取字体UIFont(name: String, size: CGFloat)?那看起来相当笨拙。

1
看一下这个 https://dev59.com/aqPia4cB1Zd3GeqPw1QE 和这个 https://dev59.com/8m445IYBdhLWcg3wwcyg#21777132 - 0rt
2个回答

2

上述代码确实可以工作,但其中一个棘手的部分是对于较粗的斜体字体,您需要使用 (UIFontDescriptorTraitItalic | UIFontDescriptorTraitBold) 作为特征,而不仅仅是 UIFontDescriptorTraitItalic。

这适用于半粗体、粗体、重体和黑体字体(均为斜体)。


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
     }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接