2012-10-31 19 views
5

Wygląda jak orientacja dla avcapturevideopreviewlayer została zamortyzowana na iOS 6. Ktoś zna nowy kod? Oto mój obecny (zamortyzowany) kod:Orientacja przestarzała w iOS 6

[self setPreviewLayer:[[AVCaptureVideoPreviewLayer alloc] initWithSession:[self captureSession]]]; 
[[self previewLayer] setVideoGravity:AVLayerVideoGravityResizeAspectFill]; 
previewLayer.orientation = UIInterfaceOrientationLandscapeRight; 
+0

Okey. Zgadza się. Ale czy to było twoje pytanie? Prawdopodobnie to ci pomoże: http://stackoverflow.com/questions/12404556/interface-orientation-in-ios-6-0 – NDY

Odpowiedz

19

Czy sprawdziłeś dokumentację? To tylko jedna linia:

Orientacja warstwy. (Przestarzałe w iOS 6.0 Użyj videoOrientation (AVCaptureConnection) zamiast..)

więc używać:

[[AVCaptureVideoPreviewLayer connection] setVideoOrientation: AVCaptureVideoOrientationLandscapeRight]; 

lub

AVCaptureVideoPreviewLayer.connection.videoOrientation= AVCaptureVideoOrientationLandscapeRight; 
+0

Próbowałem tego. Właściwość "videoOrientation" nie znaleziono w obiekcie typu "AVCaptureVideoPreviewLayer" – Marsman

+0

"Bo jest w" AVCaptureConnection "? Tak więc właściwość 'connection' z' AVCaptureVideoPreviewLayer'. –

+0

Dodałem przykład dla ciebie :) Mam nadzieję, że nie masz nic przeciwko @Nikolai Ruhe – Tieme

0

Podobnie jak @Nikolai pisał, użyj CONNECTION AVCaptureVideoPreviewLayer jest na videoOrientation zamiast tego właściwość.

(. Powodem ja to znowu delegowania dlatego jego kod może być nieco mylące, ponieważ wygląda connection jest metodą klasy Mam nadzieję, że ten przykład jasno.)

wymienić następujące:

AVCaptureVideoPreviewLayer *previewLayer = ...; 
previewLayer.orientation = UIInterfaceOrientationLandscapeRight; 

z:

AVCaptureVideoPreviewLayer *previewLayer = ...; 
previewLayer.connection.videoOrientation = AVCaptureVideoOrientationLandscapeRight; 
3

próbowałem użyć videoOrientation (AVCaptureConnection) zamiast nieaktualnych orientacji (AVCaptureVideoPr eviewLayer), ale nie obrócił już podglądu wideo.

wymieniłem to:

AVCaptureVideoPreviewLayer *previewLayer = ...; 
previewLayer.orientation = AVCaptureVideoOrientationLandscapeRight; 

z tym:

AVCaptureVideoPreviewLayer *previewLayer = ...; 
previewLayer.connection.videoOrientation = AVCaptureVideoOrientationLandscapeRight; 

Ale nie obrócić podgląd wideo. Problem polegał na tym, że dodałem i zmodyfikowałem AVCaptureVideoPreviewLayer, zanim dodałem AVCaptureDeviceInput do mojej AVCaptureSession. Dlatego połączenie mojego AVCaptureVideoPreviewLayer było zerowe. Rozwiązaniem było dodanie AVCaptureVideoPreviewLayer po dodaniu AVCaptureDeviceInput do mojej AVCaptureSession.