【问题标题】:Can't get the screenshot of fullscreen in iosios无法获取全屏截图
【发布时间】:2013-11-16 08:47:59
【问题描述】:

这是我的代码..

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 框架中知道这个问题。但我不知道,如何解决这个问题..

【问题讨论】:

标签: ios


【解决方案1】:

注意 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 上调用此方法,但这只会返回视图而不是图像。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多