拍摄ios7中状态栏的快照

时间:2013-12-27 20:55:28

标签: ios ios7 cocos2d-iphone

我正在开发一个cocos2d游戏,我需要拍摄状态栏的快照。我发现ios7通过以下语句支持全屏视图捕获(包括状态栏):

UIView *screenshotView = [[UIScreen mainScreen] snapshotViewAfterScreenUpdates:NO];

我将此视图转换为UIImage,然后使用“UIImageWriteToSavedPhotosAlbum”保存它。但是,保存的屏幕截图都是白色的。我该如何解决这个问题?

2 个答案:

答案 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