iOS 6 中不推荐使用方向
Posted
技术标签:
【中文标题】iOS 6 中不推荐使用方向【英文标题】:Orientation deprecated in iOS 6 【发布时间】:2012-10-31 14:37:59 【问题描述】:看起来 avcapturevideopreviewlayer 的方向在 ios 6 中已被贬低。有人知道新代码吗?这是我当前(折旧)的代码:
[self setPreviewLayer:[[AVCaptureVideoPreviewLayer alloc] initWithSession:[self captureSession]]];
[[self previewLayer] setVideoGravity:AVLayerVideoGravityResizeAspectFill];
previewLayer.orientation = UIInterfaceOrientationLandscapeRight;
【问题讨论】:
好吧。这是正确的。但这是你的问题吗?可能会对您有所帮助:***.com/questions/12404556/… 【参考方案1】:您检查过文档吗?只有一行:
图层的方向。 (在 iOS 6.0 中已弃用。使用 videoOrientation (AVCaptureConnection)。)
所以使用:
[[AVCaptureVideoPreviewLayer connection] setVideoOrientation: AVCaptureVideoOrientationLandscapeRight];
或
AVCaptureVideoPreviewLayer.connection.videoOrientation= AVCaptureVideoOrientationLandscapeRight;
【讨论】:
试过了。在“AVCaptureVideoPreviewLayer”类型的对象中找不到属性“videoOrientation” '因为它在AVCaptureConnection
?所以,AVCaptureVideoPreviewLayer
的 connection
属性。
我为你添加了一个例子:) 希望你不介意@Nikolai Ruhe
不应该是 AVCaptureVideoOrientationLandscapeRight 而不是 UIInterfaceOrientationLandscapeRight 吗?两者似乎都有效。
这不起作用 - 它与更改 .orientation 的效果不同。【参考方案2】:
我尝试使用 videoOrientation(AVCaptureConnection) 而不是已弃用的方向(AVCaptureVideoPreviewLayer),但它不再旋转视频预览。
我替换了这个:
AVCaptureVideoPreviewLayer *previewLayer = ...;
previewLayer.orientation = AVCaptureVideoOrientationLandscapeRight;
有了这个:
AVCaptureVideoPreviewLayer *previewLayer = ...;
previewLayer.connection.videoOrientation = AVCaptureVideoOrientationLandscapeRight;
但它没有旋转视频预览。问题是我在将 AVCaptureDeviceInput 添加到我的 AVCaptureSession 之前添加并修改了 AVCaptureVideoPreviewLayer。因此我的 AVCaptureVideoPreviewLayer 的连接为空。解决方案是在我将 AVCaptureDeviceInput 添加到我的 AVCaptureSession 之后添加 AVCaptureVideoPreviewLayer。
【讨论】:
【参考方案3】:就像@Nikolai 发布的一样,请改用 AVCaptureVideoPreviewLayer 的连接的videoOrientation
属性。
(我再次发布这个的原因是因为他的代码可能有点混乱,因为它看起来像connection
是一个类方法。希望这个例子能说明问题。)
替换以下内容:
AVCaptureVideoPreviewLayer *previewLayer = ...;
previewLayer.orientation = UIInterfaceOrientationLandscapeRight;
与:
AVCaptureVideoPreviewLayer *previewLayer = ...;
previewLayer.connection.videoOrientation = AVCaptureVideoOrientationLandscapeRight;
【讨论】:
以上是关于iOS 6 中不推荐使用方向的主要内容,如果未能解决你的问题,请参考以下文章
不推荐使用 setStatusBarOrientation,如何在 ios10 中更改设备方向