Last week I asked a question about a Simulator bug with NSAttributedString not displaying: iOS 7 Simulator Bug - NSAttributedString does not appear
Unfortunately it now appears this is not a simulator bug but an iOS 7 bug. I have now reproduced this issue on an iPhone 5 device.
The bug appears to be the combination of using NSUnderlineStyleAttributeName & NSParagraphStyleAttributeName as attributes for a NSAttributedString.
I have only tested on two iOS 7 devices so far, and the issue has only appeared on one of them. Even after they have both been upgraded to the exact same version:
1st iPhone 5 with iOS 7.0 (11A465): Text does NOT appear
1st iPhone 5 after upgrading to 7.0.2 (11A501): Text does NOT appear
2nd iPhone 5 running iOS 7.0 (11A4449d): Text displays correctly
2nd iPhone 5 after upgrading to 7.0.2 (11A501): Text does NOT appear
So it appears Apple introduced this bug after iOS 7.0 (11A4449d). I've filed a bug with them and will update you on any response I get.
Steps to reproduce bug
If you are running iOS 7.0.2 then you should be able to reproduce this bug.
Either download and run this project on your device https://github.com/rohinnz/iOS-7-BUG---NSAttributedString-does-not-appear
or
1) In Xcode 5 create a new 'Single View Application'. Call it whatever.
2) In ViewController.m, replace the viewDidLoad method with:
- (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) Compile and run on your device. Depending on your version of iOS 7, the text will either display, or will not. The UILabel's background color will display in both cases.
Screenshots
iPhone 5 with iOS 7.0 (11A465)
iPhone 5 with iOS 7.0 (11A4449d)
My Question
Is anyone able to reproduce this issue on a device?
UILabel
is just buggy.NSTextAttachments
are also causing lines of text to disappear, but inversely related to the label's height. See this question: stackoverflow.com/q/19253224/1580288 – EthanB