iOS AVCaptureVideoPreviewLayer wird in UIView nicht angezeigt?

8

Das Problem

Ich habe eine Beispielanwendung von Apple (SquareCam) , die ich als Referenz verwende, um eine benutzerdefinierte Schnittstelle für eine Kamera zu erstellen. Ich benutze das AVFoundation Framework. Wenn ich das Projekt von Apple erstellen und ausführen, wird die App wie erwartet ausgeführt. Wenn ich jedoch denselben Code aus diesem Projekt nehme und ihn in ein neues Projekt in Xcode lege, wird die Videovorschau nicht angezeigt.

Ich habe den Code auf die wesentlichen Komponenten vereinfacht, um eine Videovorschauebene zu erstellen. Auch dieser Code läuft wie im Apple (SquareCam) -Projekt, wird aber in meinem neuen Projekt nicht angezeigt.

Der Code

%Vor%

Was habe ich versucht?

Ich habe alle Steckdosen korrekt eingerichtet. Ich habe alle Framework-Bibliotheken in meiner Build-Phase. Beide Projekte verwenden ein Storyboard. Was komisch ist, ist, dass ich ein Bild von der Kamera aufnehmen und sogar die Quelle von vorne nach hinten wechseln kann. Aber die Vorschau wird nicht angezeigt. Das Apple-Projekt wurde nicht mit ARC eingerichtet. Also habe ich das Projekt aktualisiert, um ARC zu verwenden. Auch das läuft großartig im Apple-Projekt, aber nicht in einem neuen Projekt.

Gedanken?

Irgendwelche Ideen, was das Problem sein könnte? Gibt es eine Projekteinstellung, die dies verursachen könnte?

    
Corey 20.03.2013, 19:46
quelle

2 Antworten

17

Hatte das gleiche Problem und der Schlüssel setzte den Rahmen von AVCaptureVideoPreviewLayer auf die Grenzen der UIView:

%Vor%     
Brenden 25.09.2013, 21:39
quelle
4

Ich hatte ein ähnliches Problem in meinem Projekt. Aus Ihrem Code-Auszug ist es schwer zu sagen, wer die setupAVCapture-Methode aufruft. In meinem Fall musste ich sicherstellen, dass AVCaptureVideoPreviewLayer im Hauptthread erstellt wurde.

Es gibt einige Optionen. Sie können setupAVCapture im Hauptanwendungs-Thread aufrufen, indem Sie den Aufruf in den folgenden Block einschließen:

%Vor%

Wenn das keine Option ist, können Sie das nur für den folgenden Teil Ihres Codes tun:

%Vor%     
Aki 20.03.2013 21:39
quelle