无论如何要改变界面定位?

时间:2011-08-16 16:29:39

标签: objective-c ios interface orientation

我有MainWindow.xib文件,我尝试设计第二个.xib文件,它是MainWindowLandscape.xib。我有很多.xib文件,我分别为Portrait和Landscape设计它们。

我想在MainWindow.xib和MainWindowLandscape.xib(基于UITabbarController)中分配它们,我的意思是我将在MainWindow.xib中分配纵向视图,在MainWindowLandscape.xib中分配横向视图。有可能或最简单的方法是什么?

所有视图(肖像和风景)彼此都做同样的事情。只有UI才会改变。

非常感谢。

1 个答案:

答案 0 :(得分:1)

你可以通过覆盖

来做到这一点
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation

在与两个xib文件关联的视图控制器中。

具体而言,如果您想强制方向始终为纵向,请执行:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation      {
    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation))
       return YES;
    return NO;
}

如果要强制视图控制器始终以横向显示:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation      { 
    if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation))
       return YES;
    return NO;
}

执行此操作后,您必须记住控制器只有在满足条件时才会自动旋转。具体来说,对于标签栏控制器,所有内部控制器必须支持给定的方向(即,他们应该像上面那样实现shouldAutorotateToInterfaceOrientation。)