切换视图控制器视图时的奇怪行为?

时间:2011-08-28 16:36:57

标签: iphone objective-c

我有一个UIViewController,IBOutlets链接到几个UIViews。各种按钮在视图之间切换,但是当我为控制器设置新视图时会出现问题。控制器和视图都是横向的,但在第一对开关之后,一些视图以纵向模式显示。可能导致这种情况的原因是什么?

4 个答案:

答案 0 :(得分:2)

您应该检查所有 UIViewControllers 是否实现方法shouldAutorotateToInterfaceOrientation。此方法告诉操作系统可以显示由 UIViewControllers 控制的UIViews的位置(屏幕方向)。

如果您希望所有观看次数仅以横向方向显示,则该方法应仅针对YESinterfaceOrintation == UIInterfaceOrientationLandscapeLeft返回interfaceOrintation == UIInterfaceOrientationLandscapeRight。如果您只想要纵向方向,请interfaceOrintation == UIInterfaceOrientationPortrait

例如(仅支持横向模式):

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

您应该在项目设置中检查是否设置了适当的支持的设备方向(也称为支持的界面方向)。

答案 1 :(得分:0)

我认为您应该在IB中将视图设置为横向模式。如果已经完成,那么我建议不要明确更改视图控制器的视图。实现一种可以改变视图的方法 更详细:
将视图设置为视图控制器的视图,然后每个其他视图应该是此视图的子视图。您可以通过删除显示的视图并添加新视图或其他方法来实现视图更改,即将IB中的所有视图添加为子视图,隐藏所有视图,然后在您想要更改时取消隐藏所需视图并隐藏所有视图彼此 我希望你理解我的方法,如果没有,那么我在这里回答你的问题 这种方式很容易实现。 :)

答案 2 :(得分:-1)

检查您是否在所有视图中启用了此方法:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

此外,它是您在模拟器或设备上看到的吗?

答案 3 :(得分:-1)

这可能是一个模拟器错误,但尝试为每个视图使用UIViewController的单独对象,而不是为所有视图使用一个控制器。就个人而言,我之前没有遇到任何方向上的困难,但我以编程方式做事。我建议您也这样做(您可能不需要转换所有程序的xib文件,但可能只是您遇到问题的文件)。只需确保您为该视图使用的所有UIViewControllers都已正确设置:shouldAutorotateToInterfaceOrientation并且事情应该正常工作。

希望这有帮助。

相关问题