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

3

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

* 应用程序终止由于未捕获的异常 'UIApplicationInvalidInterfaceOrientation',原因是:'Supported orientations has no common orientation with the application, and shouldAutorotate is returning YES'


请查看以下链接:https://dev59.com/X2Ij5IYBdhLWcg3wPy_H#20468336。 - Peter Lapisu
2个回答

8

如@rocky所说,您需要将肖像模式添加到应用程序中才能使用UIImagePickerController,像这样:

在Info.plist中支持界面方向 或者 将此代码添加到仅限横向的应用程序委托类中:

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

Mr.Daniel的回答中,我找到了一个很好的解决方案,适用于你的横向应用, 因为你的应用只需要支持横屏,所以你只需要像这样为UINavigationController添加一个类别

@implementation UINavigationController (LandscapeOnly)

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

并将此添加到您的视图控制器中,对我有效。


你知道这是否适用于iOS 7?我尝试过,但UIImagePickerCtrler在横向模式下没有显示出来。 - Beto
我目前还没有在iOS 7上进行过测试...一旦测试完成,我会尽快告诉你 @NorbertoBenavides - Bala
@BetoBens 请查看此链接 横向应用程序中的图像选择器,可能会对您有所帮助。 - Bala
非常感谢@Bala,但如果我没有误解,答案是创建一个UIImagePicker子类,而这不是苹果建议的做法。我决定在我的应用程序的IPAD版本中使用弹出窗口,但在iphone版本中,我还无法实现横向方向。 - Beto

2

来自UIImagePickerController文档:

重要提示:UIImagePickerController类仅支持纵向模式。该类旨在按原样使用,不支持子类化。该类的视图层次结构是私有的,不能修改,除了一种情况。您可以将自定义视图分配给cameraOverlayView属性,并使用该视图呈现附加信息或管理相机界面与您的代码之间的交互。

如果您想使用此控制器,则必须将Portrait模式添加到您的Support接口方向中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接