UIImagePicker 的 presentModalViewController 在 iPhone 3.0 的横向模式下失败

Posted

技术标签:

【中文标题】UIImagePicker 的 presentModalViewController 在 iPhone 3.0 的横向模式下失败【英文标题】:presentModalViewController for UIImagePicker fails in landscape mode for iPhone 3.0 【发布时间】:2009-08-02 00:51:00 【问题描述】:

首先,我的代码并不复杂——实际上它只是“iPhone 开发入门:探索 iPhone SDK”中的两个sample programs,组合成一个程序。我使用了在蓝色视图和黄色视图之间切换的 ViewSwitcher 应用程序,并将 YellowViewController 替换为相机应用程序中的 CameraViewController。

我总共有三个 ViewController。 SwitchViewController 只是在 BlueViewController 和 CameraViewController 之间切换。

在 CameraViewController 中,我正在尝试使用 UIImagePickerController 来选择图像。选择器显示为 presentModalViewController。问题是我想在横向上执行此操作。

在 2.2.1 下一切正常,在 3.0 纵向模式下一切正常。

但是,在横向的 3.0 中,事情就中断了。如果我将 SwitchViewController 设置为横向,当我尝试呈现选择器时我的屏幕会变白。如果我旋转 iPhone 几次,我可以看到选择器的一角,这显然是在屏幕外显示的。

如果我将 CameraViewController 设置为横向,则选择器根本不会出现。

我认为this page 说“我能看到的 [3.0] 中最显着的变化是模态视图控制器将始终使用应用程序框架而不是父视图控制器的框架”时可能会有线索。不过,我不明白这到底是什么意思。

非常感谢任何帮助。谢谢!

【问题讨论】:

ios 3.x 不再受支持,此问题可能需要关闭。 【参考方案1】:

我相信这意味着:模态视图总是使用全屏,即使调用它们的父视图控制器控制的视图只是屏幕的一部分。这对于像相机选择器这样的标准模态视图是有意义的,但我可以理解为什么创建自定义模态视图的人可能希望它更小。

但不确定这是否真的有助于解决您的问题。

问题——如果你调出模态视图然后旋转手机会发生什么?

【讨论】:

好问题。如果我调出模态视图然后旋转手机,模态视图会很好地切换到横向模式。【参考方案2】:

您必须在父视图控制器中使用addSubview,尝试使用presentModalViewController:

【讨论】:

以上是关于UIImagePicker 的 presentModalViewController 在 iPhone 3.0 的横向模式下失败的主要内容,如果未能解决你的问题,请参考以下文章

UIImagePicker 允许编辑卡在中心

为 UIImagePicker 添加圆形裁剪组件?

UIIMagePicker 相机横向方向问题

UIImagePicker 拍照时旋转错误

UIImagePicker 选择后崩溃

在选项卡式 UIPopover 中使用 UIImagePicker