iOS NSAttributedString 이 cell 재 활용 으로 인 한 문제
1143 단어 iOS_BUG 솔 루 션 집계
일부 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 의 글꼴 색상 도 빨간색 입 니 다.attributed Text=nil 이 설정 되 어 있 지만 앞 에 text="을 설정 하여 이전 부 텍스트 속성 을 참조 하여 보존 합 니 다.이 현상 은 iOS 10 및 이전 에는 존재 하지 않 습 니 다.
해결 방법: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)")
}