我想我在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, 0)];
myLabel.backgroundColor = [UIColor greenColor];
myLabel.attributedText = attrStr;
[myLabel sizeToFit];
[self.view addSubview:myLabel];
}
3)在iOS 7设备上运行,然后在iOS 7模拟器中再次运行。
4)最后,将部署目标设置为iOS 6并在iOS 6模拟器上运行。
结果应如下
截图:
iOS7设备
iOS7模拟器
答案 0 :(得分:5)
看起来这不是模拟器错误,而是iOS 7错误,因为我现在能够在设备上重现它。我在这里为它创建了一个新问题:iOS 7 BUG - NSAttributedString does not appear
该错误似乎是使用NSUnderlineStyleAttributeName& NSParagraphStyleAttributeName作为NSAttributedString的属性。
答案 1 :(得分:2)
以下行导致问题。
NSParagraphStyleAttributeName:段落
答案 2 :(得分:0)
这为我工作
//Swift
let underlineAttribute = [NSUnderlineStyleAttributeName:NSNumber(int: 1)];
lblMessage.attributedText = NSAttributedString(string: "Your text", attributes: underlineAttribute)
//Am33t