ios7 – iOS 7 UITextView:重新打开应用程序后,nstextattachment的大小增加2倍

我正在使用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]来维护图像质量.
- (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.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...