【问题标题】: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 字体(全部为斜体)。