关于ios:从UIFont获取Black Italic系统字体

Getting Black Italic system font from UIFont

我似乎找不到找到" SF Pro Display Heavy Italic"字体的方法。

UIFont.systemFont(ofSize: CGFloat, weight: UIFont.Weight),但这仅使我获得所有非斜体重量。

UIFont.italicSystemFont(ofSize: CGFloat),但这只能让我获得"斜体常规"

我想要特定重量的斜体系统字体(San Francisco Pro)

还是获得类似于非系统字体UIFont(name: String, size: CGFloat)的字体? 那看起来很笨拙。


上面的代码可以正常工作,但棘手的部分是用于较粗的斜体字体,您需要对特征使用(UIFontDescriptorTraitItalic | UIFontDescriptorTraitBold),而不仅仅是UIFontDescriptorTraitItalic。

这适用于Semibold,Bold,Heavy和Black字体(全部用斜体显示)。


看一下,出于类似原因,我使用了此类。

1
2
3
4
5
6
7
8
9
10
11
12
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
     }
}