我正在尝试选择"系统字体"对于我在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
}
}