繁体   English   中英

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

[英]Handling landscape display on iphone device rotation

我正在使用一个iphone应用程序,其中每个选项卡栏都与导航控制器相关联。 在这些控制器中的一个中,我有一个显示一些列表的表格视图,当选择了一行时,另一个视图显示特定信息和一个用于查看一些相关照片的按钮。

我在横向显示照片视图时遇到问题。

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

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

但是它没有旋转,并且iphone模拟器状态栏仍处于纵向位置,因此也没有旋转。

我也改变了这样的方法:

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

设备旋转仍然没有变化。 并且Project-> Summary(Tab)-> Supported Device Orientation-> Desired Orientation中的选项清楚地启用了横向模式(右/左)。

你能帮助我了解我可能会想念的东西吗?

感谢您的帮助,

斯特凡

使用标签栏控制器时,只有当所有标签的视图控制器允许方向时,它才会旋转。 有点烦人,但确实如此。 您还需要在所有其他视图控制器中覆盖shouldAutorotateToInterfaceOrientation,并且它们必须能够平滑地适应这些方向。

如果在其他视图控制器上支持横向方向不可行,则可以尝试进行一些黑客入侵,例如,通过子类化UITabBarController并重写其shouldAutorotateToInterfaceOrientation,以在当前视图控制器返回YES时返回YES。 但这可能会导致您的应用不符合人机界面准则而被拒绝,因为您正试图规避标准界面行为。

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

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

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

表示return(UIInterface ... Portrait)的行是确定应用程序旋转能力的行。 您可以将其更改为任何值,以使其能够完全旋转,保持一定方向或任何您想要的...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM