0

これが私のビュー階層です: 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 の適切な位置ではなく、適切なサイズでトリミングされた画像です。

他の投稿や解決策を見てきましたが、私の問題を解決するものが見つかりません。

4

1 に答える 1

0

解決しました(ちょっと)。floatView を _view 階層内に移動し、webView の上に移動し、[view.layer presentationLayer].frame ソリューションで原点座標を取得することができまし。今それは動作します...

于 2012-05-27T22:49:04.317 に答える