问题描述:

部分cell中的label需要设置富文本属性,部分不需要。在使用NSAttributedString后,复用的cell同样具有相同效果。

错误使用举例:

cell.lCost.text = “”
cell.lCost.attributedText = nil
if indexPath.row == 10 {
let att = NSAttributedString(string: “\(indexPath.row)”, attributes: [NSAttributedString.Key.foregroundColor:UIColor.red, .underlineStyle:NSUnderlineStyle.single.rawValue])
cell.lCost.attributedText = att
} else {
cell.lCost.text = “\(indexPath.row)”
}
效果:除了row=10的字体颜色是红色外,下滑滚动后部分cell的字体颜色同样是红色。虽然设置了attributedText=nil,但在前面设置了text = “”,使得之前的富文本属性被引用,被保留下来。此现象在iOS10及以前不会存在。

解决方法:删除text = “”

if indexPath.row == 10 {
let att = NSAttributedString(string: “\(indexPath.row)”, attributes: [NSAttributedString.Key.foregroundColor:UIColor.red, .underlineStyle:NSUnderlineStyle.single.rawValue])
cell.lCost.attributedText = att
} else {
cell.lCost.attributedText = NSAttributedString(string: “\(indexPath.row)”)