如何在仅在 iOS-6 中支持横向方向的应用程序中使用 UIImagePickerController?
Posted
技术标签:
【中文标题】如何在仅在 iOS-6 中支持横向方向的应用程序中使用 UIImagePickerController?【英文标题】:how to use UIImagePickerController in an app which support Landscape orientation only in iOS-6? 【发布时间】:2012-10-12 13:07:14 【问题描述】:我正在开发一个仅支持横向方向的应用程序。它使用UIImagePickerController
从库中挑选图像和/或视频。应用程序在 ios-5 或更早版本中运行良好,但当我尝试呈现图像选择器控制器时它会崩溃。崩溃后会显示以下消息:
* 由于未捕获的异常“UIApplicationInvalidInterfaceOrientation”而终止应用程序,原因:“支持的方向与应用程序没有共同的方向,并且 shouldAutorotate 正在返回 YES”
【问题讨论】:
看***.com/questions/20468335/… 【参考方案1】:正如@rocky 所说,您必须在应用程序中添加 Potrait 模式才能使用 UIImagePickerController
像这样
或者 将此添加到您的仅限横向应用程序委托类中
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
return UIInterfaceOrientationMaskAll;
我从Mr.Daniel's Answer 为您的仅风景应用找到了一个不错的解决方案,
由于您只需要为您的应用程序支持横向,您只需像这样为UINavigationController
添加一个类别
@implementation UINavigationController (LandscapeOnly)
- (NSUInteger) supportedInterfaceOrientations
return UIInterfaceOrientationMaskLandscape;
@end
并将其添加到您的 viewControllers 中,它对我有用。
【讨论】:
您知道是否仍然适用于 iOS 7?我尝试这样做,但 UIImagePickerCtrler 在横向模式下不显示。 到目前为止我还没有在 iOS 7 中测试过.. 会尽快通知你@NorbertoBenavides @BetoBens 请看看这个链接Image Picker in Landscape App,可能对你有帮助 非常感谢@Bala,但如果我没有误解,答案是 UIImagePicker 子类,Apple 不推荐。我决定在我的应用程序的 IPAD 版本中使用弹出框,但在 iphone 版本中我还不能横向显示。【参考方案2】:来自 UIImagePickerController 文档:
重要提示:UIImagePickerController 类仅支持纵向模式。此类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不得修改,但有一个例外。您可以将自定义视图分配给 cameraOverlayView 属性,并使用该视图来显示附加信息或管理相机界面和代码之间的交互。
如果您想使用此控制器,您必须将纵向模式添加到您的支持界面方向。
【讨论】:
以上是关于如何在仅在 iOS-6 中支持横向方向的应用程序中使用 UIImagePickerController?的主要内容,如果未能解决你的问题,请参考以下文章
如何在仅纵向应用程序中使用 MPMovieViewController 播放横向视频
IOS6 横向在仅纵向 iPhone 应用程序中从 uiwebview 播放嵌入的 youtube 视频