На прошлой неделе я задал вопрос об ошибке симулятора с NSAttributedString, которая не отображается: iOS 7 Simulator Bug - NSAttributedString не отображается
К сожалению, теперь это выглядит не как ошибка симулятора, а ошибка iOS 7. Я сейчас воспроизвел эту проблему на устройстве iPhone 5.
Кажется, что ошибка связана с использованием NSUnderlineStyleAttributeName и NSParagraphStyleAttributeName в качестве атрибутов для NSAttributedString.
Я тестировал только два устройства iOS 7, и проблема появилась только на одном из них. Даже после того, как оба они были обновлены до той же версии:
-
1-й iPhone 5 с iOS 7.0 (11A465): текст НЕ отображается
-
1-й iPhone 5 после обновления до 7.0.2 (11A501): текст НЕ отображается
-
2-й iPhone 5 с iOS 7.0 (11A4449d): текст отображается правильно
-
Второй iPhone 5 после обновления до 7.0.2 (11A501): текст НЕ отображается
Итак, Apple представила эту ошибку после iOS 7.0 (11A4449d). Я подал ошибку с ними и обновит вас на любой ответ, который я получаю.
Шаги по воспроизведению ошибок
Если вы используете iOS 7.0.2, вы должны иметь возможность воспроизвести эту ошибку.
Загрузите и запустите этот проект на своем устройстве https://github.com/rohinnz/iOS-7-BUG---NSAttributedString-does-not-appear
или
1) В Xcode 5 создайте новое приложение Single View. Назовите это всем.
2) В ViewController.m замените метод viewDidLoad следующим образом:
- (void)viewDidLoad
{
[super viewDidLoad];
NSMutableParagraphStyle* paragraph = [[NSMutableParagraphStyle alloc] init];
paragraph.alignment = NSTextAlignmentCenter;
NSAttributedString* attrStr = [[NSAttributedString alloc] initWithString:@"Lorem ipsum dolor sit" attributes:
@{NSUnderlineStyleAttributeName:@(NSUnderlineStyleSingle),
NSParagraphStyleAttributeName:paragraph}];
UILabel* myLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 0, 0)];
myLabel.backgroundColor = [UIColor greenColor];
myLabel.attributedText = attrStr;
[myLabel sizeToFit];
[self.view addSubview:myLabel];
}
3) Скомпилируйте и запустите на своем устройстве. В зависимости от вашей версии iOS 7 текст будет отображаться или не будет отображаться. Цвет фона UILabel будет отображаться в обоих случаях.
Скриншоты
iPhone 5 с iOS 7.0 (11A465)
iPhone 5 с iOS 7.0 (11A4449d)
Мой вопрос
Кто-нибудь может воспроизвести эту проблему на устройстве?