0

我正在尝试使用NSAttributedString 在 中显示UILabel,并且我使用自动换行作为换行模式。但是当我运行应用程序时,它会抛出异常“ NSAttributedString invalid for autoresizing, it must have a single spanning paragraph style (or none) with a non-wrapping lineBreakMode.

有人可以建议我如何解决这个问题吗?

4

3 回答 3

8

要修复,请设置:

[yourLabel setAdjustsFontSizeToFitWidth:NO];

只要确保您以后不要在代码中覆盖它;)

于 2013-09-18T17:06:30.737 回答
3

对于看到这个问题的其他人。帮助我的是禁用调整UILabel文本的大小。在我的代码中,我有这个:

[myLabel setAdjustsLetterSpacingToFitWidth:YES];
[myLabel setAdjustsFontSizeToFitWidth:YES];
[myLabel setMinimumScaleFactor:15.0/myLabel.font.pointSize];

删除它并开始工作。

于 2013-06-18T08:57:09.090 回答
0

我假设您使用的NSMutableAttributedString方式错误,它应该如下使用,

NSMutableDictionary *a = [[NSMutableDictionary alloc] init];
[a setObject:[NSNumber numberWithInt:1] forKey:NSStrikethroughStyleAttributeName]; 
NSMutableAttributedString *b = [[NSMutableAttributedString alloc] initWithString:@"abcd" attributes:a]; 
self.label.attributedText = b; 

在尝试了上面的代码之后,你应该得到 UILabel 输出,就像我在图像中显示的那样在此处输入图像描述

但是如果你想单独设置属性,那么你应该这样做

[b addAttribute:ATTRIBUTENAME value:VALUE range:RANGE]; 

例如设置背景颜色的属性

[str addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(2,4)];
于 2013-02-27T15:39:36.590 回答