先週、NSAttributedString が表示されないというシミュレーターのバグについて質問しました: iOS 7 シミュレーターのバグ - NSAttributedString が表示されない
残念ながら、これはシミュレーターのバグではなく、iOS 7 のバグのようです。iPhone 5 デバイスでこの問題を再現しました。
このバグは、NSUnderlineStyleAttributeName と NSParagraphStyleAttributeName を NSAttributedString の属性として使用する組み合わせのようです。
これまでに 2 台の iOS 7 デバイスでのみテストしましたが、問題が発生したのはそのうちの 1 台だけです。両方がまったく同じバージョンにアップグレードされた後でも:
iOS 7.0 を搭載した最初の iPhone 5 (11A465): テキストが表示されない
7.0.2 (11A501) にアップグレードした後の最初の iPhone 5: テキストが表示されない
iOS 7.0 を実行する 2 番目の iPhone 5 (11A4449d): テキストが正しく表示される
7.0.2 (11A501) にアップグレードした後の 2 台目の iPhone 5: テキストが表示されない
したがって、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 Application」を作成します。何とでも呼んでください。
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 の背景色が表示されます。
スクリーンショット
iOS 7.0 を搭載した iPhone 5 (11A465)
iOS 7.0 を搭載した iPhone 5 (11A4449d)
私の質問
デバイスでこの問題を再現できる人はいますか?