【发布时间】:2015-02-12 18:19:48
【问题描述】:
作为参考,我正在使用 Xcode 6.1 并针对 IOS 7.1。 看起来有类似问题的帖子,但这些建议对我不起作用。 我有一个应用程序,我设计为只能在横向模式下工作。所以我将项目设置为仅支持横向右和横向左方向。 但是当我想在我的代码中展示一个新的 viewController 时,应用程序会抛出一个异常并在下面代码中的“presentViewController”语句处崩溃:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
PhotoViewController *photoVC = [storyboard
instantiateViewControllerWithIdentifier:@"PhotoViewController"];
// Configure the new view controller here.
//photoVC.view.frame = CGRectMake(0,0,self.view.bounds.size.width, self.view.bounds.size.height);
photoVC.view.frame = CGRectMake(0,0,568, 320);
[self presentViewController:photoVC animated:YES completion:nil];
顺便说一下,为了测试目的,我硬连线了 568 和 320 的宽度和高度。
错误信息说:
未捕获的异常'NSInternalInconsistencyException',原因:'自动布局>不支持使用边缘布局的交叉旋转边界变换>约束,例如右、左、上、下。令人反感的观点是: UITransitionView: 0x1701fa700;帧 = (-2.84217e-14 0; 320 568);变换 = [0, -1, 1, 0, 0, 0];
我不明白的一件事是为什么错误消息中的“框架”显示宽度为 320,高度显示为 568,当“presentViewController”传递一个视图控制器时,框架设置为横向模式(宽度 = 568,高度=320) 。 该错误消息还抱怨“越过旋转边界变换”,这是 viewController 的视图正在旋转的哪种暗示?
知道有什么问题吗?
谢谢
【问题讨论】:
-
您的
PhotoViewController是否实际上设置为仅允许横向,或者您是否严格依赖设置框架来为您执行此操作(提示:不会)? -
根据 ViewController Programming Guide,当您在应用程序级别指定应用程序支持特定方向时,此选择适用于应用程序中的所有视图控制器。它说:“如果您限制应用程序支持的方向,那么这些限制将全局应用于所有应用程序的视图控制器,”但我还在 PhotoViewController 中包含了“supportedInterfaceOrientations”以指定它支持左右横向,但是错误还是一样
-
您是否尝试过不明确设置框架并让系统为您执行此操作?
-
是的,我仍然遇到同样的问题。
标签: ios landscape presentviewcontroller