我正在使用下面的函数将视图渲染为图像。问题是对于大小超过 2000px 的图像,内存压力太高,应用程序崩溃。在模拟器上,它可以在任何大小下正常工作,但在 iPad(2 或更高版本)上,内存增长超过 80MB。
是否有任何“智能”方式来呈现大视图?
-(UIImage*)renderToImageUsingContextFixedScale{
UIImage*im2;
CGFloat scale = 1.0;
if(UIGraphicsBeginImageContextWithOptions != NULL)
{
if(scale > 1.0) {
UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, scale);
} else {
UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, scale);
}
} else {
UIGraphicsBeginImageContext(self.frame.size);
}
//::::::::::::::::
CGContextScaleCTM(UIGraphicsGetCurrentContext(), scale, scale);
//::::::::::::::::
@autoreleasepool {
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
im2 = UIGraphicsGetImageFromCurrentImageContext();
///THE ERROR OCCURS HERE:
UIGraphicsEndImageContext();
}
//:::::::::::::::::::::::::::
return im2;
}