我正在尝试使用NSAttributed
String 在 中显示UILabel
,并且我使用自动换行作为换行模式。但是当我运行应用程序时,它会抛出异常“ NSAttributedString invalid for autoresizing, it must have a single spanning paragraph style (or none) with a non-wrapping lineBreakMode.
”
有人可以建议我如何解决这个问题吗?
要修复,请设置:
[yourLabel setAdjustsFontSizeToFitWidth:NO];
只要确保您以后不要在代码中覆盖它;)
对于看到这个问题的其他人。帮助我的是禁用调整UILabel
文本的大小。在我的代码中,我有这个:
[myLabel setAdjustsLetterSpacingToFitWidth:YES];
[myLabel setAdjustsFontSizeToFitWidth:YES];
[myLabel setMinimumScaleFactor:15.0/myLabel.font.pointSize];
删除它并开始工作。
我假设您使用的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)];