私のiPhoneアプリでは、デバイスのスクリーンショットをキャプチャしています。スクリーンショットビューには、レイヤー階層のあるさまざまなビューがあります。下部には空白の背景ビューがあり、背景の上には画像ビューがあり、画像ビューの上にはEAGLViewがあります。EAGLViewのフレームサイズでデバイスのスクリーンショットをキャプチャしたいのですが、imageviewとbackgroundviewが含まれている必要があります。これが私のコードです:
- (IBAction)captureScreen:(id)sender{
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.cameraAppView.layer renderInContext:UIGraphicsGetCurrentContext()]; // cameraAppView is the EAGLView
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef imageRef = CGImageCreateWithImageInRect([viewImage CGImage], cameraAppView.frame);
UIImage *img = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
}
しかし、今はEAGLViewのスクリーンショットしか取得していないので、EAGLViewのフレームサイズでデバイスのスクリーンショットを取得したいと思います。どうやってやるの?
編集
申し訳ありませんが、質問のポイントを逃しました。同じ画面に他のサブビューもいくつかあります。しかし、それらはすべてEAGLViewのトップです。EAGLViewコンテンツを含むEAGLViewの下にあるビューの画像をキャプチャしたいと思います。