通过Interface Builder为属性字符串选择"系统字体"

Poc*_*chi 5 fonts ios xcode8

我试图在Interface Builder中为我的标签选择"系统字体".所有这些标签都包含属性字符串.如果它们是"痛苦标签",我可以轻松选择"系统字体",我的应用程序将自动使用iOS 8的"Helvetica"和iOS 9+的"旧金山".

问题是,使用属性字符串时似乎不可能.(我需要它们用于线之间的间距).

即使我要下载字体并在界面构建器中选择一个字体,它也不会像"纯文本"标签那样根据iOS自动更改.

有没有办法实现这个目标?也许我错过了什么.

顺便说一句,我目前的工作是将所有标签连接到一个插座阵列并循环创建NSMutableAttributedString,然后用编程检索的系统字体"覆盖"字体属性.

这样做的缺点是标签创建了两次,因此在具有大量标签的屏幕上会变慢.

编辑:我用来"更改"字体的代码:

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.

    for label in labelsToFormat {
        let targetFont = UIFont.systemFont(ofSize: label.font.pointSize)
        let originalLabel = NSMutableAttributedString(attributedString: label.attributedText!)
        originalLabel.addAttribute(NSFontAttributeName, value: targetFont, range: NSMakeRange(0, originalLabel.length))
        label.attributedText = originalLabel
    }

    for label in labelsToFormatBold {
        let targetFont = UIFont.boldSystemFont(ofSize: label.font.pointSize)
        let originalLabel = NSMutableAttributedString(attributedString: label.attributedText!)
        originalLabel.addAttribute(NSFontAttributeName, value: targetFont, range: NSMakeRange(0, originalLabel.length))
        label.attributedText = originalLabel
    }
}
Run Code Online (Sandbox Code Playgroud)