我试图在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)
| 归档时间: |
|
| 查看次数: |
1148 次 |
| 最近记录: |