知道为什么这个视图不旋转吗?

时间:2011-10-26 13:08:31

标签: iphone objective-c ios uiviewcontroller

我正在制作照片视图控制器,以便在纵向和横向视图中显示一些照片。我所做的是使用下面的代码编辑-(BOOL)shouldAutorotateToInterfaceOrientation方向,但在xcode中测试时(菜单硬件>向右旋转),视图不会在横向上旋转。我做了什么事都错了?

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

视图控制器是基于选项卡的iphone应用程序的一部分,此视图不是根视图:这是问题吗?

7 个答案:

答案 0 :(得分:1)

同时检查您支持的方向。对于XCode 4(项目 - >摘要(标签) - >支持的设备方向 - >所需的方向)。

答案 1 :(得分:1)

我的第一个想法是return true;,以确保传入的参数/你的比较没有问题(对我来说看起来不错,但你永远不知道)。

接下来会是,如果这个视图没有直接附加到窗口(或者如果你使用的是xib的话,那么其他顶层对象)你可能还必须在任何父视图中返回true。为了测试,您可能只想覆盖:

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIIinterfaceOrientation)interfaceOrientation
{
   return true;
}

表示树中的所有视图(控制器)。

答案 2 :(得分:1)

这可能只是一个错字,但不是UIIinterfaceOrientation,而是UIInterfaceOrientation

答案 3 :(得分:0)

您要覆盖的方法是shouldAutorotateToInterfaceOrientation。您的方法签名缺少最后的Orientation

答案 4 :(得分:0)

确保实现此方法的ViewController是窗口的rootViewController。 此外,使用return (interfaceOrientation != UIIinterfaceOrientationPortraitUpsideDown)更好阅读。 ;)

-shouldAutorotateToInterfaceOrientation会被调用吗?尝试使用此方法记录内容......

答案 5 :(得分:0)

您找错了地方:在RootViewController.m文件中查找以下代码:

#elif GAME_AUTOROTATION == kGameAutorotationUIViewController
//
//lots of useless comments
//
return (UIInterfaceOrientationIsPortrait(interfaceOrientation) ); //THIS LINE HERE

返回的行(UIInterface ... Portrait)是决定应用程序旋转功能的行。您可以将其更改为允许您完全旋转,保持某个方向或任何您想要的任何内容......

也在此

 -(BOOL)shouldAutorotateToInterfaceOrientation:(UIIinterfaceOrientation)interfaceOrientation
    {
      /* return (interfaceOrientation == UIIinterfaceOrientationPortrait || interfaceOrientation == UIIinterfaceOrientationLandscapeLeft || interfaceOrientation == UIIinterfaceOrientationLandscapeRight); */ //GET RID OF ALL THIS CRAP
return true; //do this instead, and if this doesn't work, try return YES;
}

答案 6 :(得分:0)

我不确定这是类型错误还是版本差异,在我最新的Xcode中,方法是这样的:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation

并且效果很好,你是否错过了参数的“to”?