Take a screenshot of an UIView where its subviews are camera sessions

梦想的初衷 提交于 2019-12-07 06:46:15

问题


I'm building an app where I need to take a screenshot of a view whose subviews are camera sessions (AVFoundation sessions). I've tried this code:

CGRect rect = [self.containerView bounds];
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.containerView.layer renderInContext:context];
UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Which effectively gets me an UIImage with the views, only that the camera sessions are black:

I've tried the private method UIGetScreenImage() and works perfectly, but as Apple doesn't allows this, I can't use it. I've also tried the one in Apple's docs but it's the same. I've tracked the problem to AVFoundation sessions using layers. How can I achieve this? The app has a container view with two views which are stopped camera sessions.


回答1:


If using iOS 7, it's fairly simple and you could do something like this from a UIViewController:

UIView *snapshotView = [self.view snapshotViewAfterScreenUpdates:YES];

You can also use this link from a widow: iOS: what's the fastest, most performant way to make a screenshot programatically?

For iOS 6 and earlier, I could only find the following Apple Technical Q&A: [How do I take a screenshot of my app that contains both UIKit and Camera elements?]

  1. Capture the contents of your camera view.
  2. Draw that captured camera content yourself into the graphics context that you are rendering your UIKit elements. (Similar to what you did in your code)



回答2:


I too am currently looking for a solution to this problem!

I am currently out at the moment so I can't test what I have found, but take a look at these links:

Screenshots-A Legal Way To Get Screenshots seems like its on the right track - here is the Example Project (and here is the initial post)

When I manage to get it to work I will definitely update this answer!



来源:https://stackoverflow.com/questions/15863588/take-a-screenshot-of-an-uiview-where-its-subviews-are-camera-sessions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!