仅在横向 UIImagePickerController 中显示CameraControls

Posted

技术标签:

【中文标题】仅在横向 UIImagePickerController 中显示CameraControls【英文标题】:showsCameraControls only in landscape UIImagePickerController 【发布时间】:2016-01-29 00:22:38 【问题描述】:

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

我认为一个好方法是根据方向切换 showCameraControls,因为 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 吗?

景观和控件不合适。

纵向,没有我们想要的控件。

【问题讨论】:

【参考方案1】:

如果你去CDVCamera.m文件并在@implementation CDVCameraPicker@end之间添加这2个方法,它应该强制视频以横向录制

- (BOOL)shouldAutorotate 
    return YES;


- (NSUInteger)supportedInterfaceOrientations 
    return UIInterfaceOrientationMaskLandscape;

【讨论】:

这会导致录制视图失真,但视频文件在录制后会正确呈现。见recording view screenshot。文本行应该是水平的。

以上是关于仅在横向 UIImagePickerController 中显示CameraControls的主要内容,如果未能解决你的问题,请参考以下文章

仅在横向 UIImagePickerController 中显示CameraControls

仅在 XCode 6 上横向

仅在横向模式下锁定应用程序

Objective C / Xcode仅在视频中启用横向[重复]

在 ios 6 上仅在一个视图中启用横向

仅在 Swift 中以横向模式打开相机和库