我正在尝试使用以下代码将我的 UIView 转换为 UIImage 。
+ (UIImage *) imageWithView:(UIView *)view{
float scale = 1.0f;
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, scale);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
view.layer.contents = nil;
return img;
}
这段代码有两个问题。
1.当我在后台线程中运行这段代码时(!mainThread)
在后台线程中调用 renderInContext 时,我遇到了内存泄漏问题。
2.当我在主线程上运行这段代码时
没有内存泄漏,但在 iPad 3 上,我在从 UIView 创建图像时遇到了一些性能问题(调用此方法时我的 UI 挂起)。由于我需要在一秒钟内调用此函数超过 5 次,因此 UI 挂起会给用户带来非常糟糕的体验。
如果我在这里做错了什么,请指导我?