以下のコードを使用して、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;
}
このコードには 2 つの問題があります。
1. このコードをバックグラウンド スレッド (!mainThread) で実行すると
バックグラウンド スレッドで renderInContext が呼び出されると、メモリ リークの問題が発生しました。
2.このコードをメインスレッドで実行すると
メモリ リークはありませんが、iPad 3 では、UIView からイメージを作成しているときにパフォーマンスの問題に直面しています (このメソッドが呼び出されると UI がハングします)。この関数を 1 秒間に 5 回以上呼び出す必要があるため、UI がハングしてユーザー エクスペリエンスが非常に悪くなります。
ここで何か間違ったことをしている場合は、私を導いてください。