更新:我刚刚在运行iOS 7的iPhone 5上遇到过这个问题.很快就会提供更多信息.
我想我在iOS 7模拟器中发现了一个没有出现NSAttributedString的错误.如果其他人可以测试这个以确认它是一个错误,那将是很好的,然后我将向Apple提交一个错误.
问题似乎是NSAttributedString使用NSUnderlineStyleAttributeName和NSParagraphStyleAttributeName的组合.
以下是重现的步骤:
1)在Xcode 5中创建一个新的“单视图应用程序”.什么都叫它.
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:@1,NSParagraphStyleAttributeName:paragraph}]; UILabel* myLabel = [[UILabel alloc] initWithFrame:CGRectMake(10,30,0)]; myLabel.backgroundColor = [UIColor greenColor]; myLabel.attributedText = attrStr; [myLabel sizeToFit]; [self.view addSubview:myLabel]; }
3)在iOS 7设备上运行,然后在iOS 7模拟器中再次运行它.
4)最后,将部署目标设置为iOS 6并在iOS 6模拟器上运行它.
结果应如下
> iOS 7设备:正确显示
> iOS 7模拟器:仅显示标签背景
> iOS 6模拟器:正确显示
截图:
iOS7设备
iOS7模拟器
解决方法
看来这不是一个模拟器错误,而是一个iOS 7错误,因为我现在能够在设备上重现它.我在这里创建了一个新问题:
iOS 7 BUG – NSAttributedString does not appear
该错误似乎是使用NSUnderlineStyleAttributeName&的组合. NSParagraphStyleAttributeName作为NSAttributedString的属性.