我正在使用ios7中的Text Kit构建笔记编辑器。之前,我遇到了自定义大小的NSTextAttachment渲染问题,导致渲染速度非常慢。我通过缩放图像然后将它们添加到textview中解决了这个问题。你可以在iOS 7.0 UITextView gettings terribly slow after adding images to it找到我的答案。在缩放图像后,textview的渲染运行良好,没有任何延迟。textview的属性文本存储在核心数据中。在应用程序的运行会话期间,textview正确显示图像。即使将属性文本保存在核心数据中,并重新检索以在textview上显示时,图像看起来也很好。但是,在杀死应用程序并再次运行应用程序之后,图像会放大到2倍大小。在缩放图像时,我使用以下函数,并使用[[UIScreen bounds] scale]来保持图像质量。
如果我将图像缩放到1.0,图像不会扩展,但图像质量非常差。
我认为问题出在布局管理器中。
我已经尝试了子类化NSLayoutManager并覆盖- (void)drawGlyphsForGlyphRange:(NSRange)glyphsToShow atPoint:(CGPoint)origin。当运行新的应用程序会话时,我看到附件大小加倍。如果我尝试检查附件的大小并调整它,则滞后开始再次出现。我已经卡在这个问题上有一段时间了。任何建议将不胜感激。
- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize {
UIGraphicsBeginImageContextWithOptions(newSize, NO, [UIScreen mainScreen].scale);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
如果我将图像缩放到1.0,图像不会扩展,但图像质量非常差。
我认为问题出在布局管理器中。
我已经尝试了子类化NSLayoutManager并覆盖- (void)drawGlyphsForGlyphRange:(NSRange)glyphsToShow atPoint:(CGPoint)origin。当运行新的应用程序会话时,我看到附件大小加倍。如果我尝试检查附件的大小并调整它,则滞后开始再次出现。我已经卡在这个问题上有一段时间了。任何建议将不胜感激。