let font = UIFont.systemFont(ofSize: 14, weight: UIFont.Weight.bold)
let face = font.fontDescriptor.object(forKey: UIFontDescriptorFaceAttribute) as! String
print("face: \(face)")
字符串
斯威夫特3号酒店,纽约**
let font = UIFont.systemFont(ofSize: 14, weight: UIFontWeightBold)
let face = font.fontDescriptor.object(forKey: UIFontDescriptorFaceAttribute) as! String
print("face: \(face)")
let labelFont = label.font as CTFont
if let fontTraits = CTFontCopyTraits(labelFont) as? [CFString: CFNumber], let fontWeight = fontTraits[kCTFontWeightTrait] {
print(fontWeight)
}
5条答案
按热度按时间bnlyeluc1#
看起来
fontDescriptor.fontAttributes
不会返回字体的所有属性。幸运的是fontDescriptor.object(forKey: .traits)
会,所以我们可以跳到它上面。较新的Swift版本:
字符串
较旧的Swift版本:
型
就像
label.font.weight
一样简单(This基本上等同于https://stackoverflow.com/a/48688000/1288097,但它使用
UIKit
API)deikduxw2#
要获取字体粗细字符串名称,请使用字体描述符并传入face属性。
Swift 4.2
字符串
型
zzzyeukh3#
尝试使用Swift 4的示例字体扩展。(它需要对所有类型的字体权重进行一些改进)
字符串
试试标签:
型
这是苹果的Font Weights列表文档
此权重的值为NSNumber对象。有效值范围为**-1.0到1.0**。值0.0对应于常规或中等字体权重。您也可以使用字体权重常量来指定特定权重。
uhry853o4#
似乎没有直接的方法来获得它.作为一种变通方法,你可以得到什么是字体的重量如下指示:
字符串
UIFont被转换为CTFont,它生成包含kCTFontWeightTrait值的CFDictionary(通过使用
CTFontCopyTraits(_:)
)。请注意,它不会知道确切的字体粗细,但它可能在某种程度上有助于指示粗细:用于从字体特征字典中访问归一化权重特征的键。返回的值是CFNumber,表示归一化权重的-1.0到1.0之间的浮点值。值0.0 对应于常规或中等字体粗细*。
azpvetkf5#
您可以尝试使用字体的符号特征:
字符串
查看docs以获取更多特征。