Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
呈现模式viewController时,横向IOS应用程序引发异常_Ios_Landscape_Presentviewcontroller - Fatal编程技术网

呈现模式viewController时,横向IOS应用程序引发异常

呈现模式viewController时,横向IOS应用程序引发异常,ios,landscape,presentviewcontroller,Ios,Landscape,Presentviewcontroller,作为参考,我使用的是Xcode 6.1,目标是IOS 7.1。 看起来有类似问题的帖子,但这些建议对我来说并不奏效。 我有一个应用程序,我设计的工作只有在横向模式。因此,我将该项目设置为仅支持横向右侧和横向左侧方向。 但在我的代码中,当我想显示一个新的viewController时,应用程序会抛出一个异常,并在下面代码中的“presentViewController”语句处崩溃: UIStoryboard *storyboard = [UIStoryboard storyboardWithNam

作为参考,我使用的是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”,原因:“Autolayout>不支持使用边布局>约束(如右、左、上、下)跨越旋转边界变换。令人反感的观点是: UITransitionView:0x1701fa700;帧=(-2.84217e-14 0;320 568);转化= [0, -1, 1, 0, 0, 0];

我不明白的一件事是,当“presentViewController”通过设置为横向模式(宽度=568,高度=320)的viewController时,为什么错误消息中的“frame”显示320为宽度,568为高度。 错误消息还抱怨“跨越旋转边界变换”,哪种类型的提示表明viewController的视图正在旋转

你知道怎么了吗


经过反复试验,我发现将“SetTranslatesAutoResistingGMaskintoConstraints”设置为“否”是导致问题的原因。我在演示ViewController的viewDidLoad中使用了它:

[self.view setTranslatesAutoresizingMaskIntoConstraints:NO];
所以我删除了这个声明。 我使用此语句来确保接口生成器自动布局约束的创建与我以编程方式添加的自动布局约束之间不会存在约束冲突。 因此,当我删除该语句时,我当然会遇到约束冲突,但我通过“删除”viewDidLoad中存在约束冲突的每个子视图的现有约束来消除它们。 顺便说一下,我的编程约束在“updateViewConstraints”中调用


我不完全理解为什么将SetTranslatesAutoResistingGMaskintoConstraints设置为“否”会导致无法以模式显示新的viewController的问题,但我猜设置“SetTranslatesAutoResistingGMaskintoConstraints”系统自动计算显示视图控制器的方向和大小时,需要选择“是”。

您的
PhotoViewController
是否实际设置为仅允许横向方向,或者您是否严格依赖于设置框架来为您执行此操作(提示:不会)?根据《ViewController编程指南》,当您在应用程序级别指定应用程序支持特定方向时,此选项适用于应用程序中的所有ViewController。它说:“如果限制应用程序支持的方向,那么这些限制将全局应用于所有应用程序的视图控制器”,但我还在PhotoViewController中包含了“supportedInterfaceOrientations”,以指定它支持左右横向,但是错误仍然是一样的。你有没有尝试过不显式地设置帧,让系统为你做这些呢?是的,我还是遇到了同样的问题。