iPhone/iPad 相机覆盖视图自动旋转问题 UIImagePickerController

Posted

技术标签:

【中文标题】iPhone/iPad 相机覆盖视图自动旋转问题 UIImagePickerController【英文标题】:iPhone/iPad Camera Overlay View AutoRotation Issue UIImagePickerController 【发布时间】:2015-06-17 11:50:38 【问题描述】:

根据 Apple 的说法,我们不能继承 UIImagePickerController 类。来自文档:

重要提示:UIImagePickerController 类支持纵向模式 只要。此类旨在按原样使用,不支持 子类化。此类的视图层次结构是私有的,不能 被修改,只有一个例外。您可以将自定义视图分配给 cameraOverlayView 属性并使用该视图来呈现额外的 信息或管理相机界面之间的交互 和你的代码。

但是如果我们想在相机上叠加一个视图,我们可以这样做:

imagePickerController.cameraOverlayView = overlayView

实现相机叠加视图后,视图会在 iPad 中自动调整。但是,iPhone 并非如此。

查询: iPhone中cameraOverlayView可以像iPad一样设置自动旋转吗?

如果不是,使用UIDeviceOrientationDidChangeNotification 旋转cameraOverlayView 的最佳方式是什么

【问题讨论】:

【参考方案1】:

你可以继承UIImagePickerController 并且可以实例化它。苹果说你不应该继承它是出于其他原因。您不能更改UIImagePickerController 的默认控件,例如交换相机、关闭闪光灯、拍照或录像等。为此,您必须创建overlay view 并应设置为cameraOverlayViewUIImagePickerController。就是这样,否则你可以继承UIImagePickerController

所以,现在解决您的问题:

子类 UIImagePickerController 并在该类中实现以下两个方法,例如,

 -(BOOL)shouldAutorotate

    return NO;

-(UIInterfaceOrientationMask)supportedInterfaceOrientations

    return UIInterfaceOrientationMaskPortrait;

然后实例化该类而不是 UIImagePickerController

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

【讨论】:

以上是关于iPhone/iPad 相机覆盖视图自动旋转问题 UIImagePickerController的主要内容,如果未能解决你的问题,请参考以下文章

可以连接到 iPhone/iPad 的蓝牙功能的照片相机

将视图添加到视图控制器并使用自动布局通过旋转完全覆盖它的正确方法是啥?

相机图像选择器控件 - iOS7 中的自动旋转

CSS 跨浏览器问题 - 旋转在 Safari、Ipad 和 Iphone 上不起作用

具有固定背景图像的 ipad/iphone 应用程序

swift - 当设备旋转到横向(iPhone/iPad)时,如何让 UIView 变成全屏?