我正在使用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]来维护图像质量.
iOS 7.0 UITextView gettings terribly slow after adding images to it
缩放图像后,textview渲染运行正常,没有任何延迟.textview的属性文本存储在核心数据中.在运行的应用程序会话中,textview正确显示图像.即使在核心数据中保存属性文本并检索它再次显示在textview上,图像看起来很好.但是在杀死应用程序并再次运行应用程序之后.图像被放大到2倍大小.在缩放图像时我使用了以下功能并使用[[UIScreen bounds] scale]来维护图像质量.
- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { UIGraphicsBeginImageContextWithOptions(newSize,NO,[UIScreen mainScreen].scale); [image drawInRect:CGRectMake(0,newSize.width,newSize.height)]; UIImage *newImage = UIGraphicsGetimageFromCurrentimageContext(); UIGraphicsEndImageContext(); return newImage; }
如果我将图像缩放到1.0,图像不会扩展,但图像质量非常差.
我认为问题出在哪里?
问题在于布局管理器.
我试过了什么
我已经尝试了子类化NSLayoutManager并覆盖了
– (void)drawGlyphsForGlyphRange:(NSRange)glyphsToShow atPoint:(CGPoint)origin
我看到的是在运行应用程序的新会话时附件大小加倍.如果我尝试检查附件的大小并调整其大小.滞后开始再次出现.
我很快就遇到了这个问题.任何建议都会非常感激.
解决方法
可能是由于视网膜显示的原因?如果是视网膜,您可能需要在存放前将尺寸缩小50%.试试这个怎么样: –
//Original Size that you want to store CGSize imageSize = CGSizeMake(320.0f,320.0f); //Make the image 50% of the size for retina if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&([UIScreen mainScreen].scale == 2.0)) { // Retina display imageSize = CGSizeMake(160.0f,160.0f); } UIImage * storeImage = [self imageWithImage:self.image scaledToSize:imageSize] //Todo: Store this image locally or whatever you want to do.