AVCaptureVideoPreviewLayer 能够使用 Quicktime 在横向模式下进行录制

AVCaptureVideoPreviewLayer with the ability to record in landscape mode with Quicktime

所以我目前有一个相机应用程序。我有它,所以它只能在纵向模式下使用,但您仍然可以在横向模式下录制视频和拍照。我使用以下代码来处理:

videoConnection?.videoOrientation = self.orientation()

但是,由于该应用程序本身没有注册横向模式,因此您无法通过 quicktime 横向录制屏幕(它保持纵向)(quicktime>文件>录制电影>选择设备名称)

有办法解决这个问题吗?我实际上不需要更改有关设备的任何内容以支持横向,我只希望能够以快速方式记录它,但 UI 中的任何内容都不需要更改。

您可以为 UIDevice 设置呼叫 beginGeneratingDeviceOrientationNotifications 并订阅 UIDeviceOrientationDidChangeNotification。之后,您可以在代码中使用方向 属性 of UIDevice

参考 Apple documentation for UIDevice class 了解详情。

尝试为 UIDevice 设置调用 beginGeneratingDeviceOrientationNotifications 并将其订阅到 UIDeviceOrientationDidChangeNotification

使用 UIDevice 的定位比例。

您需要做的是检测方向的变化:

查看此 apple 文档 UIDevice Class Reference,了解更多详细信息。

这是一个示例实现 && Swift

这就是我最终做的!利用标记的答案。

func orientationChanged() {
    var orient = UIDevice.currentDevice().orientation

    if orient == UIDeviceOrientation.Portrait {
        print("PORT")
                UIApplication.sharedApplication().statusBarOrientation = UIInterfaceOrientation.Portrait
    } else if orient == UIDeviceOrientation.LandscapeLeft {
        print("OR ARE YOU CRASHING")
                UIApplication.sharedApplication().statusBarOrientation = UIInterfaceOrientation.LandscapeRight
    } else if orient == UIDeviceOrientation.LandscapeRight {
        print("WHY YOU CRASHING")
                UIApplication.sharedApplication().statusBarOrientation = UIInterfaceOrientation.LandscapeLeft
    } else if orient == UIDeviceOrientation.PortraitUpsideDown {
                UIApplication.sharedApplication().statusBarOrientation = UIInterfaceOrientation.PortraitUpsideDown
    }