Ios iPhone/iPad摄像头覆盖视图自动旋转问题UIImagePickerController

Ios iPhone/iPad摄像头覆盖视图自动旋转问题UIImagePickerController,ios,objective-c,iphone,xcode,uiimagepickercontroller,Ios,Objective C,Iphone,Xcode,Uiimagepickercontroller,根据苹果公司的说法,我们不能将UIImagePickerController类划分为子类。从文档中: 要点:UIImagePickerController类支持纵向模式 只有此类旨在按原样使用,不支持 子类化。此类的视图层次结构是私有的,不能 可以修改,但有一个例外。可以将自定义视图指定给 cameraOverlayView属性,并使用该视图显示其他视图 提供信息或管理摄像机界面之间的交互 还有你的代码 但是,如果我们想在相机上覆盖一个视图,我们可以按如下方式操作: imagePickerCon

根据苹果公司的说法,我们不能将
UIImagePickerController
类划分为子类。从文档中:

要点:UIImagePickerController类支持纵向模式 只有此类旨在按原样使用,不支持 子类化。此类的视图层次结构是私有的,不能 可以修改,但有一个例外。可以将自定义视图指定给 cameraOverlayView属性,并使用该视图显示其他视图 提供信息或管理摄像机界面之间的交互 还有你的代码

但是,如果我们想在相机上覆盖一个视图,我们可以按如下方式操作:

imagePickerController.cameraOverlayView = overlayView
实现摄影机覆盖视图后,视图会在iPad中自动调整自身。然而,iPhone并非如此

查询: 我们可以像在iPad中一样在iPhone中设置摄像头的自动旋转吗


如果不是,使用
UIDeviceOrientationIDChangeNotification

旋转摄像机覆盖视图的最佳方式是什么?您可以将
UIImagePickerController子类化并实例化它。苹果公司说你不应该因为其他原因而把它归类。您不能更改
UIImagePickerController
的默认控件,如交换相机、关闭闪光灯、拍摄照片或视频等。为此,您必须创建
overlay视图
,并应设置为
UIImagePickerController
cameraOverlayView
。就是这样,否则您可以子类化
UIImagePickerController

现在,您的问题的解决方案是:

子类
UIImagePickerController
并在该类中实现以下两个方法:

 -(BOOL)shouldAutorotate{

    return NO;
}
-(UIInterfaceOrientationMask)supportedInterfaceOrientations{

    return UIInterfaceOrientationMaskPortrait;
}
然后实例化该类,而不是UIImagePickerController

您的OverlyView的方向问题将得到解决。它将始终保持纵向模式