Capture iPhone screen with status bar included?

后端 未结 4 1382
星月不相逢
星月不相逢 2020-12-10 07:36

I am looking for a way to capture a screenshot on the iPhone with the top status bar included, I am currently using the following code:

    UIGraphicsBeginIm         


        
相关标签:
4条回答
  • 2020-12-10 07:51

    You can get the entire contents of the screen by calling the private API UIGetScreenImage. See my previous answer to a similar question for details.

    0 讨论(0)
  • 2020-12-10 08:00

    Instead of using private API, why not render the entire UIWindow into the image context? It might be enough to replace self.view with self.view.window in your code.

    You can also get the current window(s) as a property of the [UIApplication sharedApplication] instance. It's possible the status bar is on a separate window layer and maybe you'll have to render the windows in order.

    Something like this:

    UIGraphicsBeginImageContext(self.view.window.frame.size);
    for (UIWindow *window in [[UIApplication sharedApplication] windows]) {
       [window.layer renderInContext:UIGraphicsGetCurrentContext()];
    }
    UIImage *screenshotImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);
    

    At any rate, you probably don't need to resort to private API.

    0 讨论(0)
  • 2020-12-10 08:07

    As of iOS 7, you can do this without the use of private APIs using

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

    See my answer to this question:

    Moving status bar in iOS 7

    0 讨论(0)
  • 2020-12-10 08:09

    As of Oct 8, 2009, the use of UIGetScreenImage got my app rejected! :( I would not advise using it. I believe Apple is trying to clean up all the apps and make them conform to the new 3.x OS/APIs. I'm looking for an alternative. If anyone has any suggestions. The video API?

    0 讨论(0)
提交回复
热议问题