1

我最近开始研究 NSAtributedString 是如何工作的。我正在使用 NSAtributedString 构建类似于富文本编辑器的东西。我有一个自定义编写的 CustomRichTextEditor:UITextView ,我想使用下面的代码覆盖 NSAtributedString 的默认属性:

UIFont *font = [UIFont systemFontOfSize:24.0];
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:font,NSFontAttributeName,[UIColor darkGrayColor],NSForegroundColorAttributeName,nil];
NSMutableAttributedString* attrStr = [self.richTextEditor.attributedText mutableCopy];
[attrStr setAttributes:attributes
                 range:NSMakeRange(0, self.richTextEditor.attributedText.string.length-1)

 ];
self.richTextEditor.attributedText = attrStr;

但是,因为我的编辑器是空的并且范围未知,所以我崩溃并出现错误:

由于未捕获的异常“NSRangeException”而终止应用程序,原因:“NSMutableRLEArray replaceObjectsInRange:withObject:length:: Out of bounds”

当范围未知时,如何正确设置 NSAtributedString 的字体和颜色?

4

1 回答 1

1

好吧,您可以像这样设置范围长度:

self.richTextEditor.attributedText.string.length-1

这可能会出错。如果您将 0 - 1 设为无符号整数,它会突然变得非常大,因此您的范围将非常大。

所以你需要做的是string.length > 0在你做你的范围之前检查你是否有一个。如果您的字符串为空,则执行所有代码无论如何都是无用的......

于 2013-09-25T18:38:02.980 回答