Có vẻ trên iOS 8.0 (12A365) NSMutableAttributedString
đôi khi sẽ không được hiển thị chính xác. Vấn đề rõ ràng xảy ra khi phạm vi của thuộc tính không bắt đầu ở đầu văn bản (và nếu không có thuộc tính nào khác bắt đầu ở đầu văn bản). !Hiển thị NSMutableAttributedString trên iOS 8
Vì vậy, với 1.) từ thứ hai "xanh" trong sẽ không hiển thị nền màu xanh lá cây (bug) ("tế bào" là một UITableViewCell
với UILabel
"label" như là một subview):
1.)
text = [[NSMutableAttributedString alloc] initWithString:@"Green is green. (-> Bug)"];
[text addAttribute:NSBackgroundColorAttributeName value:[UIColor greenColor] range:(NSRange){9,5}];
cell.label.attributedText=text
với 2.) và 3) các hình nền được hiển thị một cách chính xác:
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
Find ảnh chụp màn hình và XCode 6 dự án ở đây: Screenshot and XCode 6 Project
Có vẻ đối với tôi như là một lỗi trong iOS 8 - do đó, một báo cáo đi vào Apple.
tôi đã b een nhìn thấy điều này cũng như cố gắng nhấn mạnh một phần của một nhãn. Đây là một hồi quy thực sự khó chịu. –
@ Darcy: Cảm ơn bạn đã bình luận. Bạn có thể thử thêm một thuộc tính giả khác (như nền màu rõ ràng ...) tại (NSRange) {0,1} - đối với tôi đây là giải pháp cho 1.) như đã đề cập ở trên. –
Bạn đã gửi báo cáo lỗi cho Apple chưa? Tôi đang chạy chính xác cùng một vấn đề ở đây. – MrBr