处理iphone设备旋转时的横向显示

时间:2011-10-26 22:07:19

标签: iphone objective-c ios uiview uiviewcontroller

我正在使用带有标签栏的iphone应用程序,每个标签栏都与导航控制器相关联。在其中一个控制器中,我有一个表视图显示了一些列表,当一行被选中时,另一个视图显示特定信息,一个按钮可以看到一些相关照片。

我在横向显示照片视图时出现问题。

照片视图控制器包含一个UIImageView,可以一次显示一张照片,此ImageView对象大小为320x460,以全屏模式显示。为了处理轮换,我添加了以下代码:

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

但它没有旋转,iphone模拟器状态栏仍然处于纵向位置,所以也没有旋转。

我也改变了这样的方法:

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

设备轮换仍无变化。 项目 - >摘要(标签) - >支持的设备定位 - >所需的定位中的选项清楚地启用横向模式(右/左)。

你能帮我理解我可能缺少什么吗?

求助,

的Stephane

3 个答案:

答案 0 :(得分:2)

使用标签栏控制器,只有在所有标签的视图控制器允许方向时,它才会旋转。有点讨厌,但它确实存在。您还需要在所有其他视图控制器中覆盖shouldAutorotateToInterfaceOrientation,并且它们需要能够平滑地调整到这些方向。

如果在其他视图控制器上支持横向方向是不切实际的,也许您可​​以尝试一些黑客攻击,例如通过继承UITabBarController并覆盖其shouldAutorotateToInterfaceOrientation,如果当前视图控制器返回,则返回YES是。但是,由于您试图规避标准接口行为,因此可能会因为不符合人机界面指南而拒绝您的应用。

答案 1 :(得分:0)

检查您是否不在某种子类容器视图控制器中(如您自己的UINavigationController或UITabBarController子类)。如果是这种情况,请确保它不会覆盖shouldAutorotateToInterfaceOrientation:方法。

答案 2 :(得分:-1)

您在错误的位置查找:在RootViewController.m文件中查找以下代码:

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

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