1

これは私のコードです..

extern CGImageRef UIGetScreenImage();
CGRect frame = CGRectMake(0, 0, 320, 548);
CGImageRef cgoriginal = UIGetScreenImage();
CGImageRef cgimg = CGImageCreateWithImageInRect(cgoriginal, frame);            
UIImage *viewImage = [UIImage imageWithCGImage:cgimg];    
CGImageRelease(cgoriginal);                
CGImageRelease(cgimg);

スクリーンショットは撮れますが、フルスクリーンではありません。私は CGRect フレームでこの問題を知っています。しかし、私は知りません、それを修正する方法..

4

1 に答える 1

0

UIGetScreenImage はプライベート API のため、拒否されることに注意してください。同様のことをしたい場合は、ウィンドウレイヤーで -renderInContext を使用するか、-drawViewHierchyInRect (ios7 のみ) を使用してみてください。このメソッドは、UIView のカテゴリとして使用する必要があります。

- (UIImage *) imageByRenderingViewOpaque:(BOOL) yesOrNO {
        UIGraphicsBeginImageContextWithOptions(self.bounds.size, yesOrNO, 0);

    if ([self respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)]) {
        [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
    }
    else {
        [self.layer renderInContext:UIGraphicsGetCurrentContext()];
    }
    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return resultingImage;
}

UIScree インスタンスで呼び出すことができるこのメソッドもありますが- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates、それは画像ではなくビューのみを返します。

于 2013-11-05T13:48:19.487 に答える