Кажется, что iOS 8.0 (12A365) NSMutableAttributedString
иногда отображается неправильно. Проблема, очевидно, возникает, когда диапазон атрибута не начинается в начале текста (и если нет другого атрибута, начинающегося с начала текста).
Итак, с 1.) второе слово "green" in не будет отображать зеленый фон (ошибка!) ( "ячейка" - это UITableViewCell
с UILabel
"меткой" как подвью):
1).
text = [[NSMutableAttributedString alloc] initWithString:@"Green is green. (-> Bug)"];
[text addAttribute:NSBackgroundColorAttributeName value:[UIColor greenColor] range:(NSRange){9,5}];
cell.label.attributedText=text
С 2.) и 3.) фон отображается правильно:
2.)
text = [[NSMutableAttributedString alloc] initWithString:@"Green is green. (-> Ok)"];
[text addAttribute:NSBackgroundColorAttributeName value:[UIColor greenColor] range:(NSRange){0,5}];
[text addAttribute:NSBackgroundColorAttributeName value:[UIColor greenColor] range:(NSRange){9,5}];
cell.label.attributedText=text
3).
text = [[NSMutableAttributedString alloc] initWithString:@"Green is green. (-> Ok)"];
[text addAttribute:NSBackgroundColorAttributeName value:[UIColor greenColor] range:(NSRange){0,5}];
cell.label.attributedText=text
Найдите скриншот и проект XCode 6 здесь: Скриншот и проект XCode 6
Кажется, я ошибся в iOS 8 - поэтому отчет отправляется в Apple.