iOSアプリケーションのさまざまなビューから画像を取得してユーザーに電子メール画面を送信する方法があります。私が描くスクリーンの大部分は正常に動作していますが、このテクニックをUIWebViewで使用すると、画面の表示部分だけが表示されます。画面外のものはレンダリングされたイメージには含まれません。ここでスタックを掘っていたが、これまでに何も見つからなかったのだろうか?ここでUIWebViewからオフスクリーンコンテンツを含む全画像を取得する方法
は、私が現在使用している方法である:
-(NSData *)getImageFromView:(UIView *)view
{
NSData *pngImg;
CGFloat max, scale = 1.0;
CGSize size = [view bounds].size;
// Scale down larger images else we run into mem issues with mail widget
max = (size.width > size.height) ? size.width : size.height;
if(max > 960)
scale = 960/max;
UIGraphicsBeginImageContextWithOptions(size, YES, scale);
CGContextRef context = UIGraphicsGetCurrentContext();
[view.layer renderInContext:context];
pngImg = UIImagePNGRepresentation(UIGraphicsGetImageFromCurrentImageContext());
UIGraphicsEndImageContext();
return pngImg;
}
FYI - これは大きなページでは遅くなることがありますが、[バックグラウンドキューでレンダリングできます](http://stackoverflow.com/a/10954342/168594)。 (ただし、メインキューでフレーム操作を行う必要があります。 – zekel