1

iOSの画面キャプチャにこのコードを使用しています:

CGImageRef screen = UIGetScreenImage();
UIImage *image = [UIImage imageWithCGImage:screen];
CGImageRelease(screen);  
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
CGRect screenshotFrame;  
CGImageRef screenshotRef = CGImageCreateWithImageInRect(screenshotRef, screenshotFrame);
UIImage * screenshot = [[(UIImage *)screenshotRef retain] autorelease];
CGImageRelease(screenshotRef);

しかし、私の画面には画面の下部にツールバーが含まれています。キャプチャした画面にツールバーを表示したくありません。ツールバーをトリミングするにはどうすればよいですか? コードを変更するにはどうすればよいですか?

4

3 に答える 3

2

ルートビューなので、self.viewのレイヤーをキャプチャできると思います

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
    //Retina display
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);
} else {
    UIGraphicsBeginImageContext(self.view.bounds.size);
}
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

楽しむ!

于 2013-01-10T08:17:34.307 に答える
1

これを試して:

UIGraphicsBeginImageContext(/*CGRECT*/);     
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

ここで、CGRectスクリーンショットを撮りたい四角形を渡します。

それがあなたを助けることを願っています..

于 2013-01-10T08:04:28.787 に答える
0

あなたの

CGRect screenshotFrame = CGRectMake(0, 0, 320, 436);
// 480(screen height) - 44(toolbar height) = 436
于 2013-01-10T08:08:27.110 に答える