我正在开发一个cocos2d游戏,我需要拍摄状态栏的快照。我发现ios7通过以下语句支持全屏视图捕获(包括状态栏):
UIView *screenshotView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO];
我将此视图转换为UIImage,然后使用“UIImageWriteToSavedPhotosAlbum”保存它。但是,保存的屏幕截图都是白色的。我该如何解决这个问题?
答案 0 :(得分:0)
基于apple doc,它说,该方法从渲染服务器捕获屏幕的当前可视内容,并使用它们构建新的快照视图,如果尚未将任何屏幕视图提交到渲染服务器,快照的那部分将没有内容。所以这可能是一个问题。
如果可以,你可以使用
UIView *screenshotView = [[self view] snapshotViewAfterScreenUpdates:NO];
或者还有其他方式,请参阅https://developer.apple.com/library/ios/qa/qa1703/_index.html
上的以下文档答案 1 :(得分:-1)
UIView *screenshotView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO];
将返回无法转换为图像的UIReplicateView。你必须使用
drawViewHierarchyInRect:afterScreenUpdates:
喜欢这样〜
- (UIImage *)snapshot:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0);
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
全部在苹果文档中 https://developer.apple.com/library/ios/qa/qa1817/_index.html