NSAttributedString对自动调整异常无效

时间:2013-02-27 15:05:44

标签: ios xcode ios6 xcode4.2

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

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

3 个答案:

答案 0 :(得分:8)

要修复,请设置:

[yourLabel setAdjustsFontSizeToFitWidth:NO];

请确保稍后不要在代码中覆盖此内容;)

答案 1 :(得分:3)

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

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

删除它并开始工作。

答案 2 :(得分: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; 

在尝试上面的代码之后,你应该像我在图像enter image description here中看到的那样得到UILabel输出

但如果你想分别设置属性,那么你应该这样做

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

例如设置背景颜色的属性

[str addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(2,4)];