2012-10-31 64 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。

相关问题