为空范围TextView更改NSAtributedString颜色和字体

时间:2013-09-25 17:55:20

标签: iphone ios objective-c nsattributedstring

我最近开始研究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的字体和颜色?

1 个答案:

答案 0 :(得分:1)

好吧,你设置范围长度如下:

self.richTextEditor.attributedText.string.length-1

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

所以你需要做的就是在制作你的射程之前检查你是否有string.length > 0。 如果您的字符串为空,则执行所有代码无用......