AVCaptureVideoPreviewLayer能够使用Quicktime以横向模式录制

时间:2015-06-30 02:22:12

标签: ios objective-c swift avfoundation

所以我目前有一个相机应用程序。我有它所以它只能在肖像模式下工作,但你仍然可以录制视频并以横向模式拍摄照片。我使用以下代码来处理:

videoConnection?.videoOrientation = self.orientation()

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

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

4 个答案:

答案 0 :(得分:3)

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

参考Apple documentation for UIDevice课程了解详情。

答案 1 :(得分:0)

尝试为int main(void) { char *message; int status; pid_t child; message = mmap(NULL, BUFSIZE , PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0); if (message == MAP_FAILED) { perror("mmap"); return 1; } child = fork(); if ( child == -1 ) { perror("fork"); return 1; } else if (child == 0) { strcpy( message, "foo\n"); } else { wait(&status); printf("The child wrote:\n%s\n", message); } return 0; } 设置beginGeneratingDeviceOrientationNotifications来电并订阅UIDevice

使用UIDeviceOrientationDidChangeNotification的比例。

答案 2 :(得分:0)

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

查看此Apple文档UIDevice Class Reference,了解有关详细信息。

这是一个示例实现 Obj-C&& Swift

答案 3 :(得分:0)

这就是我最终要做的!利用明确的答案。

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
    }