以整个的UIView的快照/截图 - iPhone(Take snapshot / screens

2019-09-22 06:57发布

我想采取一个UIView的截图/快照。 我能够用低于当前可见视图的代码来获取截图 - 但我整个视图后。

该视图是一个滚动视图所以存在着心不是可见以下内容,我想要被包括

如何扩展该代码考虑到心不是可见的看法?

UIGraphicsBeginImageContext(activityView.frame.size);

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

UIImage *fullScreenshot = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(fullScreenshot, nil, nil, nil);

Answer 1:

尝试这个:

CGSize fittingSize = [yourScrollView sizeThatFits:CGSizeZero];
UIGraphicsBeginImageContext(fittingSize);
[yourScrollView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *capImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();


Answer 2:

有来自iOS的7引入了一类新的方法UIView

- (UIView *)snapshotViewAfterScreenUpdates:(BOOL)afterUpdates;
 - (UIView *)resizableSnapshotViewFromRect:(CGRect)rect afterScreenUpdates:(BOOL)afterUpdates withCapInsets:(UIEdgeInsets)capInsets;

您可以使用此方法来把你当前视图的屏幕截图。



Answer 3:

尝试这种方式,可以帮助你

    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);


Answer 4:

我已经发现了这个问题。 滚动视图是我正在采取的快照视图的子视图。 要解决它,我深入到了正确的观点。

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

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

UIImage *fullScreenshot = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(fullScreenshot, nil, nil, nil);


文章来源: Take snapshot / screenshot of whole UIView - iPhone