Sto costruendo un'app in cui devo prendere uno screenshot di una vista le cui sottoview sono sessioni di telecamere (sessioni di AVFoundation). Ho provato questo codice:Scatta uno screenshot di un UIView in cui le sue sottoview sono sessioni di telecamere
CGRect rect = [self.containerView bounds];
UIGraphicsBeginImageContextWithOptions(rect.size,YES,0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[self.containerView.layer renderInContext:context];
UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Il che mi fa effettivamente un'UIImage con il punto di vista, solo che le sessioni della fotocamera sono neri:
Ho provato il metodo privato UIGetScreenImage()
e funziona perfettamente, ma come Apple non lo consente, non posso usarlo. Ho anche provato quello in Apple's docs ma è lo stesso. Ho tracciato il problema alle sessioni di AVFoundation usando i livelli. Come posso raggiungere questo obiettivo? L'app ha una vista container con due viste che interrompono le sessioni della videocamera.
Ho anche avuto questo problema un po 'di tempo fa. Il problema era che il livello di anteprima della fotocamera (così come alcuni livelli di rendering personalizzati) utilizzava OpenGL. Il metodo che stai usando non funziona con i layer backed GL come ricordo. Chiederò in giro e vedrò se è vero. –
@SteveMcFarlin hai trovato un modo per risolvere il problema, sto affrontando lo stesso problema http://stackoverflow.com/questions/41239254/take-screenshot-during-video-call-screenshot-for-uiview-with-camera -session-sub – Chlebta
Hai trovato soluzioni? – Chlebta