我正在使用NSMutableAttributedString在标签中显示多种字体和颜色的文本。 NSMutableAttributedString在iOS 13中无法正常工作,但是相同的代码在iOS 11和12版本中也可以正常工作。
let hdAttributedText = NSMutableAttributedString(string: "Sample", attributes: [NSAttributedString.Key.font: UIFont(name: "HelveticaNeue", size: 14.0)!, NSAttributedString.Key.foregroundColor: UIColor.black])
hdAttributedText.append(NSAttributedString(string: " "))
hdAttributedText.append(NSAttributedString(string: "Description", attributes: [NSAttributedString.Key.font: UIFont(name: "HelveticaNeue-Medium", size: 14.0)!, NSAttributedString.Key.foregroundColor: UIColor(red: 0.29, green: 0.70, blue: 0.36, alpha: 1)]))
logoTextLabel.attributedText = hdAttributedText
预期结果是“样品描述”。在此文本中,“示例”应使用黑色文本的常规字体,而“描述”应使用绿色的中等字体
答案 0 :(得分:0)
问题是您没有在“示例”和“描述”之间添加空白的任何属性。尝试为其提供一些属性...
hdAttributedText.append(NSAttributedString(string: " ", attributes: [NSAttributedString.Key.font: UIFont(name: "HelveticaNeue-Medium", size: 14.0)!, NSAttributedString.Key.foregroundColor: UIColor(red: 0.29, green: 0.70, blue: 0.36, alpha: 1)]))
尝试这样的事情。
答案 1 :(得分:-2)
在iOS 13上,属性字符串在表视图中不起作用,所幸我知道此问题的解决方法,它会像魅力一样工作。
您需要做的就是使属性字符串在主线程上运行(即使您在awakeFromNib中设置属性字符串)也是如此:
DispatchQueue.main.async {
//set your attributed text here
}