【问题标题】:Change NSAtributedString Color and Font for Empty Range TextView更改空范围 UITextView 的 NSAttributedString 颜色和字体
【发布时间】:2013-09-25 17:55:20
【问题描述】:

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

【问题讨论】:

  • 为什么不 self.richTextEditor.attributedText.string.length?你正在剪切最后一个字符。
  • 问题很明显但是没有范围怎么解决呢?

标签: iphone ios objective-c nsattributedstring


【解决方案1】:

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

self.richTextEditor.attributedText.string.length-1

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

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

【讨论】:

  • Range [0,0] 没有错误但不会产生任何结果。那我该如何设置颜色和字体呢?
  • Range [0,0] 当然可以,但没有效果。但是如果你没有文本,你为什么要改变它的字体呢?您遇到的越界异常是 Range [0, 0-1] 因为这就像 Range [0, MAX_INT]。
  • 我想更改字体和颜色的默认设置。就是这样。
猜你喜欢
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
  • 2012-12-26
相关资源
最近更新 更多