これが私のビュー階層です: UIWebView サブビューを含むビュー (デフォルトの viewControllher の _view) を Xib に持っています。同じ Xib ファイルで、floatView と呼ばれる別の 2 番目のビュー (_view 内ではない)。floatView は UIWebView の上にプログラムで追加され、ユーザーがドラッグできます。floatView 内には、より小さな subView (cropView) があります。私はクロップフレームとしてcropViewを使用して、その下に表示されている部分のwebViewを取得したいと考えています。
これを行うために使用しようとしているコードを次に示しますが、結果は必要なものではありません。
- (IBAction)captureImage:(id)sender {
CGSize layerSize = self.view.bounds.size;
UIGraphicsBeginImageContext(layerSize);
[self.webView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
[floatView convertRect:cropView.frame toView:self.view];
CGRect CropFrame = cropView.frame;
CGImageRef subImageRef = CGImageCreateWithImageInRect(image.CGImage, CropFrame);
UIImage *subViewImage = [UIImage imageWithCGImage:subImageRef];
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(subViewImage, nil, nil, nil);
}
カメラロールで取得した画像は、表示されている webView の適切な位置ではなく、適切なサイズでトリミングされた画像です。
他の投稿や解決策を見てきましたが、私の問題を解決するものが見つかりません。