上周我问了一个关于 NSAttributedString 没有显示的模拟器错误的问题:iOS 7 Simulator Bug - NSAttributedString does not appear
不幸的是,现在看来这不是模拟器错误,而是 iOS 7 错误。我现在已经在 iPhone 5 设备上重现了这个问题。
该错误似乎是使用 NSUnderlineStyleAttributeName 和 NSParagraphStyleAttributeName 作为 NSAttributedString 的属性的组合。
到目前为止,我只在两台 iOS 7 设备上进行了测试,问题只出现在其中一台上。即使它们都升级到完全相同的版本:
第一个带有 iOS 7.0 (11A465) 的 iPhone 5:文本不出现
升级到 7.0.2 (11A501) 后的第一部 iPhone 5:文本不出现
运行 iOS 7.0 (11A4449d) 的第二部 iPhone 5:文本正确显示
升级到 7.0.2 (11A501) 后的第二部 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 中创建一个新的“单一视图应用程序”。随便叫。
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)
我的问题
有人可以在设备上重现此问题吗?