showsCameraControls仅在横向UIImagePickerController中

时间:2016-01-29 00:22:38

标签: ios objective-c cordova uiimagepickercontroller cordova-plugins

所以我试图强迫用户使用UIImagePickerController以横向模式录制视频。

一个好方法是根据方向切换showsCameraControls,因为UIImagePickerController必须以纵向运行。

- (void) orientationChanged:(NSNotification *)notification {
    [self showControls];
}

- (void) showControls {
    UIDeviceOrientation deviceOrientation = [UIDevice currentDevice].orientation;

    if (UIDeviceOrientationIsLandscape(deviceOrientation)) {
        pickerController.showsCameraControls = YES;

    } else if (UIDeviceOrientationIsPortrait(deviceOrientation)) {
        pickerController.showsCameraControls = NO;
    }
}

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
[self showControls];

这很好用。但是,当设备旋转时,相机控件不合适。

这里唯一的解决方案是使用AVFoundation而不是UIImagePickerController吗?

景观和控制不合适。

landscape

肖像,没有控件就像我们想要的那样。

enter image description here

1 个答案:

答案 0 :(得分:0)

如果您转到CDVCamera.m文件并在@implementation CDVCameraPicker@end之间添加此2种方法,则会强制视频以横向方式录制

- (BOOL)shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}