我在iOS 7中使用Text Kit来创建富文本编辑器。以下是问题。
首先,字体大小为16:
然后我使用代码插入图像:
// Image Attachment
NSTextAttachment *imageAttachment = [[NSTextAttachment alloc] init];
[imageAttachment setImage:image];
imageAttachment.bounds = CGRectMake(0, 0, width, height);
[self insertTextAttachment:imageAttachment];
和
- (void)insertTextAttachment:(NSTextAttachment*)textAttachment {
NSMutableAttributedString *newContent = [[NSMutableAttributedString attributedStringWithAttachment:textAttachment] mutableCopy];
NSMutableAttributedString *currentContent = [self.contentTextView.attributedText mutableCopy];
[currentContent insertAttributedString:[[NSAttributedString alloc] initWithString:@"\n"] atIndex:mEditingRange.location];
[currentContent insertAttributedString:[[NSAttributedString alloc] initWithString:@"\n"] atIndex:mEditingRange.location];
mEditingRange.location++;
[currentContent replaceCharactersInRange:mEditingRange withAttributedString:newContent];
[currentContent setAttributes:@{NSFontAttributeName: [UIFont fontWithName:kOFontDefault size:16.0]} range:NSMakeRange(mEditingRange.location + newContent.length, 1)];
[self.contentTextView setAttributedText:currentContent];
}
但是,插入图像后,文本字体意外更改:
我尝试使用以下代码来解决问题(在insertTextAttachment:方法中添加):
[currentContent setAttributes:@{NSFontAttributeName: [UIFont fontWithName:kOFontDefault size:16.0]} range:NSMakeRange(mEditingRange.location + newContent.length, 1)];
问题部分得到解决,新行中的新文字字体正确,但图片旁边的文字仍然是错误:
有人可以帮忙吗?
答案 0 :(得分:9)
我有类似的问题。我尝试设置并向NSMutableAttributedString
添加属性,但在设置UITextView's
attributedText
属性后,这些属性从未反映出来。文本的字体大小总是较小。
我通过在设置UITextView's
属性之前将font
attributedText
属性存储在局部变量中,然后设置它的font
属性,最终实现了此功能之后的本地变量。
答案 1 :(得分:2)
这个问题也让我头疼不已。问题是您使用新的NSAttributedString替换NSAttributedString currentContent的范围。但是,这会覆盖currentContent上指定的所有属性,包括字体。当您在NSTextAttachment之后开始输入时,它将查找newContent的字体,但没有指定字体。因此,它使用默认字体。要解决此问题,您可以将此行添加到您的代码中:
[newContent
addAttribute:NSFontAttributeName
value:[UIFont fontWithName:kOFontDefault size:16.0]
range:NSMakeRange(0, newContent.length)];
答案 2 :(得分:1)
设置textView的输入属性属性
答案 3 :(得分:1)
这显然是一个错误。这是我找到的解决方法。插入图像后再次添加正确的字体属性将修复它。
self.contentTextView.textStorage.addAttributes(self.contentTextView.typingAttributes, range: mEditingRange)