首页 > 解决方案 > NSAttributedString 在 iOS 13 中无法按预期工作

问题描述

我正在使用 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

预期结果是“示例描述”。在此文本中,“示例”应为黑色文本的常规字体,“描述”应为绿色的中等字体

标签: swiftxcodensattributedstringios13nsmutableattributedstring

解决方案


在 iOS 13 上,属性字符串在 tableviews 中不起作用,幸运的是我知道一个解决方法,它会像一个魅力一样工作。

您需要做的就是使属性字符串在主线程上运行(即使您在 awakeFromNib 中设置属性字符串),如下所示:

DispatchQueue.main.async {
                     //set your attributed text here
         }

推荐阅读