-1
我有一个方便的扩展是这样的:的UILabel与attributedText在自定义的UITableViewCell:颜色不渲染,直到重用(iOS10)
extension NSMutableAttributedString {
func append(string: String, attributes: [String: Any]) {
let attributed = NSMutableAttributedString(string: string)
let range = NSRange(location: 0, length: string.utf16.count)
for (attribute, value) in attributes {
attributed.addAttribute(attribute, value: value, range: range)
}
append(attributed)
}
}
我的造型文字在我的UILabel正是如此:
let normalAttributes = [NSForegroundColorAttributeName: darkGray]
let lightAttributes = [NSForegroundColorAttributeName: lightGray]
let text = NSMutableAttributableString()
text.append("Part 1", attributes: normalAttributes)
text.append("Part 2", attributes: lightAttributes)
所有这些都在一个自定义的UITableViewCell类中。发生的事情是,文本使用NIB文件中的基本颜色进行渲染,而不是根据我的属性字符串自定义前景色 - 直到我执行导致单元重用的操作(如滚动),之后突然显示颜色正确。
我似乎无法发现对象的生命周期有任何问题,并且没有其他地方与此标签混淆了。标签fwiw是一个IBOutlet,所以我不会每次创建一个新的或任何奇怪的东西。
“我在我的UILabel中编写文本样式”,但是_wherely_你运行那个代码?上下文(和时间)就是一切。 – matt
你的方便扩展正在做很多不必要的工作。它可以用'append(NSAttributedString(string:string,attributes:attributes))'代替。 –
你是从主线程还是后台线程修改标签?让UI更新不会真正显示,直到您强制重新呈现为止,这是从后台线程触及UI的一个标志。 –