2

UIView のスクリーンショット/スナップショットを撮ろうとしています。現在表示されているビューの下のコードを使用してスクリーンショットを取得できますが、ビュー全体の後にいます。

ビューはスクロールビューであるため、表示されていないコンテンツが下にあり、含めたい

このコードを拡張して、表示されていないビューを考慮するにはどうすればよいですか?

UIGraphicsBeginImageContext(activityView.frame.size);

[self.activityView.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *fullScreenshot = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(fullScreenshot, nil, nil, nil);
4

4 に答える 4

3

これを試して:

CGSize fittingSize = [yourScrollView sizeThatFits:CGSizeZero];
UIGraphicsBeginImageContext(fittingSize);
[yourScrollView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *capImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
于 2012-09-10T11:47:05.640 に答える
1

この方法を試してみてください

    UIImage *screenshotImage;
        UIGraphicsBeginImageContext(self.view.bounds.size);
        [self drawLayer:self.view.layer inContext:UIGraphicsGetCurrentContext()];
        [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
        screenshotImage = UIGraphicsGetImageFromCurrentImageContext();
        img.image=screenshotImage;
        UIGraphicsEndImageContext();
        CGImageRef cgImg = CGImageCreateWithImageInRect(screenshotImage.CGImage, CGRectMake(0, 0, 320, 460));
        UIImage* part = [UIImage imageWithCGImage:cgImg];
        UIImageView* iv = [[UIImageView alloc] initWithImage:part];

        UIImageWriteToSavedPhotosAlbum(screenshotImage, nil, nil, nil);
于 2012-09-10T11:46:24.860 に答える
0

問題が見つかりました。スクロールビューは、スナップショットを撮っていたビューのサブビューでした。それを修正するために、正しいビューにドリルダウンしました。

UIGraphicsBeginImageContext(activityView.scrollView.scrollableView.frame.size);

[self.activityView.scrollView.scrollableView.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage *fullScreenshot = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(fullScreenshot, nil, nil, nil);
于 2012-09-10T11:59:31.580 に答える