2013-04-07 9 views
5

Ich baue eine App, wo ich einen Screenshot einer Ansicht machen muss, deren Teilansichten Kamerasessions (AVFoundation-Sitzungen) sind. Ich habe diesen Code versucht:Machen Sie einen Screenshot von einer UIView, deren Unteransichten Kamerasessions sind

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

Was mich effektiv eine UIImage mit den Ansichten bekommt, nur, dass die Kamera-Sitzungen sind schwarz:

enter image description here

ich die private Methode versucht haben UIGetScreenImage() und funktioniert perfekt, aber wie Apple dies nicht erlaubt, kann ich es nicht verwenden. Ich habe auch das in Apple's docs versucht, aber es ist das gleiche. Ich habe das Problem zu AVFoundation-Sitzungen mit Layern verfolgt. Wie kann ich das erreichen? Die App verfügt über eine Containeransicht mit zwei Ansichten, bei denen Kamerasitzungen gestoppt werden.

+0

Ich hatte auch dieses Problem eine Weile zurück. Das Problem bestand darin, dass die Kameravorschauebene (sowie einige benutzerdefinierte Rendering-Ebenen) OpenGL verwenden. Die Methode, die Sie verwenden, funktioniert nicht mit GL-unterstützten Layern, wie ich mich erinnere. Ich werde fragen und sehen, ob das tatsächlich stimmt. –

+0

@SteveMcFarlin haben Sie einen Weg finden, um das Problem zu lösen, ich habe das gleiche Problem konfrontiert http://stackoverflow.com/questions/41239254/take-screenshot-during-video-call-screenshot-for-uiview-with-camera -session-sub – Chlebta

+0

Haben Sie Lösungen gefunden? – Chlebta

Antwort

2

Bei der Verwendung von iOS 7, es ist ziemlich einfach, und man konnte von einem UIViewController etwas tun:

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

Sie auch diesen Link von einer Witwe verwenden: iOS: what's the fastest, most performant way to make a screenshot programatically?

Für iOS 6 und früher konnte ich nur die folgenden Apple Technical Q & A finde: How do I take a screenshot of my app that contains both UIKit and Camera elements?

  1. Aufnahme des Inhalt Ihrer Kameraansicht. (Explained here)
  2. Zeichnen Sie den Inhalt der Kamera selbst in den Grafikkontext, den Sie für Ihre UIKit-Elemente verwenden. (Ähnlich wie in Ihrem Code)
+0

Ich bin verwirrt, weil diese Lösung nicht zu funktionieren scheint, aber es wurde gewählt. Ich habe alle möglichen Variationen dieser Methode ausprobiert, aber kein Glück. Es ist immer noch ganz schwarz. Hat das wirklich funktioniert? – Vlad

+0

@Vlad Ich habe es versucht und es funktioniert nicht, haben Sie eine Lösung gefunden? – Chlebta

0

Ich bin auch auf der Suche nach einer Lösung für dieses Problem!

Ich bin zur Zeit im Moment, so kann ich nicht testen, was ich gefunden habe, aber einen Blick auf diese Links führen:

Screenshots-A Legal Way To Get Screenshots scheint, wie seine auf dem richtigen Weg - hier ist die Example Project (und here ist der initiale Beitrag)

Wenn ich es geschafft habe, es zu arbeiten, werde ich definitiv diese Antwort aktualisieren!

+0

Ich habe auch diese Beiträge gesehen, aber ich konnte es nicht implementieren:/ – pmerino

Verwandte Themen