5

更新:我刚刚在运行 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, 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 Simulator:仅显示标签背景
  • iOS 6 模拟器:正确显示

截图:

iOS7 设备

iOS 7 设备
iOS7 模拟器
iOS 7 模拟器

4

3 回答 3

5

看来这不是模拟器错误,而是 iOS 7 错误,因为我现在已经能够在设备上重现它。我在这里为它创建了一个新问题:iOS 7 BUG - NSAttributedString does not appear

该错误似乎是使用 NSUnderlineStyleAttributeName 和 NSParagraphStyleAttributeName 作为 NSAttributedString 的属性的组合。

于 2013-10-01T23:48:35.693 回答
2

导致问题的以下行。

NSParagraphStyleAttributeName:段落

于 2013-09-25T06:35:46.550 回答
0

这对我有用

//Swift
let underlineAttribute = [NSUnderlineStyleAttributeName:NSNumber(int: 1)];
lblMessage.attributedText = NSAttributedString(string: "Your text", attributes: underlineAttribute)
//Am33t
于 2014-11-27T13:28:14.130 回答