如何在仅在iOS-6中支持横向方向的应用程序中使用UIImagePickerController?

时间:2012-10-12 13:07:15

标签: ios6 uiimagepickercontroller landscape uiinterfaceorientation

我正在开发一款仅支持横向定位的应用。它使用UIImagePickerController从库中选择图像和/或视频。应用程序在iOS-5或之前运行正常,但是当我尝试呈现图像选择器控制器时,它会崩溃。它在崩溃后发出以下消息:

* 由于未捕获的异常'UIApplicationInvalidInterfaceOrientation'而终止应用程序,原因是:'支持的方向与应用程序没有共同的方向,并且shouldAutorotate返回YES'

2 个答案:

答案 0 :(得分:8)

正如@rocky所说,你必须将Potrait模式添加到你的应用程序才能使用UIImagePickerController这样

Supported Interface Orientation in Info.plist 要么 将此添加到仅限景观应用委托类

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
    return UIInterfaceOrientationMaskAll;
}

Mr.Daniel's Answer我找到了一个很好的解决方案,你的景观应用程序, 因为您只需要支持应用程序的横向,您只需要添加UINavigationController这样的类别

@implementation UINavigationController (LandscapeOnly)

- (NSUInteger) supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskLandscape;
}
@end

并将其添加到viewControllers,它适用于我。

答案 1 :(得分:2)

来自UIImagePickerController文档:

  

重要说明:UIImagePickerController类仅支持纵向模式。此类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不得修改,但有一个例外。您可以将自定义视图分配给cameraOverlayView属性,并使用该视图显示其他信息或管理相机界面与代码之间的交互。

如果要使用此控制器,则必须将“纵向”模式添加到“支持”界面方向。