检查 NSFont 在 Swift 中是不是为粗体

Posted

技术标签:

【中文标题】检查 NSFont 在 Swift 中是不是为粗体【英文标题】:Check if NSFont is bold in Swift检查 NSFont 在 Swift 中是否为粗体 【发布时间】:2016-07-15 15:39:11 【问题描述】:

我正在编写单元测试检查生成的 NSAttributedString 的格式。

我可以像这样提取字体:

if let font = attributedString.attributesAtIndex(0, effectiveRange: nil) as? NSFont 
    ...

鉴于这个 NSFont 实例,我如何检查它是否为粗体?

【问题讨论】:

请检查一下它可以帮助你***.com/questions/9234587/name-and-size-from-nsfont 【参考方案1】:

你可以像这样检查你的字体特征:

let descriptor = font.fontDescriptor
let symTraits = descriptor.symbolicTraits
let traitSet = NSFontTraitMask(rawValue: UInt(symTraits))
let isBold = traitSet.contains(.BoldFontMask))

但我不确定isBold 是否对于所有看似粗体的字体都是true

【讨论】:

【参考方案2】:

更新了 Swift 4 的答案并带有 NSFont 扩展名:

extension NSFont 
    var isBold: Bool 
        return fontDescriptor.symbolicTraits.contains(.bold)
    

【讨论】:

以上是关于检查 NSFont 在 Swift 中是不是为粗体的主要内容,如果未能解决你的问题,请参考以下文章

将 UILabel 文本设置为粗体 [重复]

如何在运行时将文本框的文本设置为粗体?

在 ListView 中仅将标题设为粗体

无法将 MahApps ToggleSwitch 中的 ContentControl 设置为粗体

为啥我的所有 UIAlertView 标签/文本在 iOS 8 中默认为粗体

将 NSFontAttributeName 设置为粗体