Iphone 是否仅支持层次结构中的子UIViewController上的旋转?
我有一个子Iphone 是否仅支持层次结构中的子UIViewController上的旋转?,iphone,orientation,landscape,screen-orientation,uiinterfaceorientation,Iphone,Orientation,Landscape,Screen Orientation,Uiinterfaceorientation,我有一个子UIViewController,它是一个层次结构的一部分,有一个uitabarcontroller和一个UINavigationBarController。让我们称之为ChildViewController;然后,我的层次结构如下所示: UITabBarController | UINavigationViewController [tab 1] | SomeParentViewController | SomeOtherParentV
UIViewController
,它是一个层次结构的一部分,有一个uitabarcontroller
和一个UINavigationBarController
。让我们称之为ChildViewController
;然后,我的层次结构如下所示:
UITabBarController
|
UINavigationViewController [tab 1]
|
SomeParentViewController
|
SomeOtherParentViewController
|
ChildViewController
现在我只希望ChildViewController
支持横向旋转。(这是一个显示聊天视图的视图控制器,对于某些人来说,横向模式更容易键入。)我将方法-(BOOL)shouldAutorotateToInterfaceOrientation:
添加到ChildViewController
以声明它支持横向,但旋转设备没有效果。通过调试,我发现没有调用–WillAnimateRotationInterfaceOrientation:duration:
在网上搜索之后,我发现UITabBarController
的后代只支持给定的方向,如果UITabBarController
本身支持该方向。而且,奇怪的是,UITabBarController
仅在每个选项卡的视图控制器支持旋转时才支持方向。与上面的选项卡1一样,其他三个选项卡的视图控制器是UINavigationViewController
实例;而且,因为我们必须更深入,每个UINavigationViewController
仅在其子视图控制器支持方向时才支持方向
因此在这一点上,添加添加-(BOOL)应该自动旋转指向面方向:
到SomeParentViewController
,而另一个UINavigationController
实例的子对象允许ChildViewController
旋转。但是现在SomeParentViewController
和其他三个选项卡将旋转到横向,看起来很可怕。我只想ChildViewController
支持横向
作为一项工作,我创建了自己的UITabBarController
子类,名为RotatingUITabBarController
,并向ChildViewController
类添加一个全局标志,让我知道它是否已创建并显示。RotatingUITabBarController
仅覆盖-(BOOL)应自动旋转指针面方向:
,并按以下方式实现:
if ([ChildViewController isDisplayed]) {
return ((toInterfaceOrientation == UIInterfaceOrientationPortrait) ||
(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) ||
(toInterfaceOrientation == UIInterfaceOrientationLandscapeRight));
}
return NO;
现在,如果我启动应用程序,切换到SomeParentViewController
或任何其他选项卡,旋转手机不会切换到横向模式,而是保持纵向模式。到现在为止,一直都还不错。如果我创建并显示ChildViewController
并旋转手机,手机将进入横向。到现在为止,一直都还不错。但是现在,如果我弹出ChildViewController
来显示SomeOtherParentViewController
,它也在横向视图中。SomeParentViewController
和我切换到的每个其他选项卡也是如此
我现在没有戏法了。任何建议都将不胜感激,谢谢 YouTube应用程序可能是你想要的最佳行为模式。大多数界面都是纵向的,但播放视频的视图可以是纵向的,也可以是横向的 如果你看看这个应用程序,你会注意到UI的整个选项卡部分实际上是一个模态视图控制器。当您启动应用程序时,选项卡栏控制器会立即以模式显示。唯一一次离开模式选项卡栏控制器是在播放视频时——您会注意到整个选项卡界面向下滑动以显示视频视图。当视频结束时,选项卡栏控制器再次以模式显示 这是一种与“正常”方法相反的方法,在“正常”方法中,您只会短暂地使用模态视图控制器,但它在YouTube应用程序中运行得非常好。它可能对你也有好处,也可能对你没有好处。重要的是让你的应用程序具有可预测性和流动性,并让用户感觉随时处于控制之中