iOS 7.0 UITextView在向其添加图像后变得非常慢

时间:2014-04-12 06:29:28

标签: ios uitextview

我正在尝试在ios7及更高版本中使用UITextView制作文本编辑器,但我面临一些可怕的错误。我已经浏览了许多与文本视图滚动相关的Stack Overflow问题。但是,我无法找到的主要问题是在向其添加NSTextAttachment(Custom)之后文本呈现速度慢。我正在使用这篇文章中描述的方法:

http://ossh.com.au/design-and-technology/software-development/implementing-rich-text-with-images-on-os-x-and-ios/

但是在添加图像后,文本的输入变得非常慢。代码几乎与帖子中描述的相同,所以我没有粘贴在这里。原因可以如下面的问题所述: ios - iOS 7 UITextView is slow after typing lots of text

  

" drawGlyphsForGlyphRange运行N * 2次,其中N是次数   你的线条用词包装。"

但我不确定。是否有任何建议可以解决这种极慢的文本渲染问题?

1 个答案:

答案 0 :(得分:1)

使用以下代码

添加时,我通过缩放图像来解决滞后问题
-(void)insertImage:(UIImage *)image
{
NSTextAttachment* attachment = [[NSTextAttachment alloc] initWithData:UIImageJPEGRepresentation(image, 0.0) ofType:@"image/jpeg"];

    float scalingFactor = 1.0;

    CGSize imageSize = [image size];
    float width = self.frame.size.width;
    if (width < imageSize.width)
        scalingFactor = (width)*scalingFactor / imageSize.width;

    CGRect rect = CGRectMake(0, 0, imageSize.width*scalingFactor, imageSize.height *scalingFactor);
    attachment.image = [self imageWithImage:image scaledToSize:rect.size];
    attachment.bounds = [self scaleImageSizeToWidth:self.frame.size.width withImage:image];
    NSRange range = [self selectedRange];
    NSAttributedString* attachmentchar =
    [NSAttributedString attributedStringWithAttachment:attachment];
    [[self textStorage] insertAttributedString:attachmentchar atIndex:range.location];

}

我注意到使用 - (void)textStorage:(NSTextStorage *)textStorage willProcessEditing:(NSTextStorageEditActions)editedMask range:(NSRange)editedRange changeInLength:(NSInteger)delta 并枚举附件的文本存储并使用自定义nstextattachment子类替换它们并不高效,并且正在大大减慢渲染速度。