微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐