2012-10-31 94 views
5

看起來像avcapturevideopreviewlayer的方向已在iOS 6中折舊。任何人都知道新代碼?這是我目前的(折舊)代碼:iOS 6中不推薦使用方向

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

Okey。那就對了。但是,你的問題是?可能這會幫助你:http://stackoverflow.com/questions/12404556/interface-orientation-in-ios-6-0 – NDY

回答

19

你檢查了文檔嗎?它只有一行:

圖層的方向。 (不推薦使用iOS中6.0使用videoOrientation (AVCaptureConnection)代替。)

所以要用:

[[AVCaptureVideoPreviewLayer connection] setVideoOrientation: AVCaptureVideoOrientationLandscapeRight]; 

AVCaptureVideoPreviewLayer.connection.videoOrientation= AVCaptureVideoOrientationLandscapeRight; 
+0

試過了。在'AVCaptureVideoPreviewLayer'類型的對象中找不到屬性'videoOrientation' – Marsman

+0

'因爲它在'AVCaptureConnection'中?所以,'AVCaptureVideoPreviewLayer'的''connection'屬性。 –

+0

我爲你添加了一個例子:)我希望你不要介意@Nikolai Ruhe – Tieme

0

就像@尼古拉貼,使用AVCaptureVideoPreviewLayer的連接的videoOrientation財產代替。

(我再次發佈這樣做的原因是因爲他的代碼可能會有點混亂,因爲它看起來像connection是一個類的方法希望這個例子清楚。)

替換以下:

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

有了:

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

我試圖用videoOrientation(AVCaptureConnection),而不是過時的方向(AVCaptureVideoPr eviewLayer),但它不再旋轉視頻預覽。

我換成這樣的:

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

有了這個:

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

但它並沒有旋轉視頻預覽。問題是我添加並修改了AVCaptureVideoPreviewLayer,然後纔將AVCaptureDeviceInput添加到我的AVCaptureSession中。因此,我的AVCaptureVideoPreviewLayer的連接爲空。解決方案是在將AVCaptureDeviceInput添加到我的AVCaptureSession之後添加AVCaptureVideoPreviewLayer。

相關問題