选择"系统字体"通过Interface Builder获取归因字符串

时间:2016-12-21 00:44:24

标签: ios fonts xcode8

我正在尝试选择"系统字体"对于我在Interface Builder中的标签。所有这些标签都包含属性字符串。如果他们是"疼痛标签"我可以轻松选择"系统字体"我的应用程序将自动使用" Helvetica"适用于iOS 8和旧金山"适用于iOS 9 +。

问题在于,使用属性字符串时似乎无法做到这一点。 (我需要它们用于线之间的间距)。

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

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

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

这样做的缺点是标签会被创建两次,所以在有很多标签的屏幕上它会变慢。

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

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
    }
}

0 个答案:

没有答案