如何防止iphone上仅旋转一个视图

如何防止iphone上仅旋转一个视图,iphone,objective-c,cocoa-touch,interface-builder,Iphone,Objective C,Cocoa Touch,Interface Builder,我有一个tabbar应用程序,您可能知道,在每个视图控制器的shouldAutorotate方法中必须返回YES,视图才能旋转。我的问题是我想阻止一个视图旋转,如果我返回否,那么其他视图也不会旋转。这有什么办法吗?信息:在我的任何视图中,我都没有子类化UITabbarController 提前谢谢 理论上,您可以检入shouldAutorotate当前视图: if ( currentView == viewThatShouldNotRotate ) return NO; 但是,仅在更改

我有一个tabbar应用程序,您可能知道,在每个视图控制器的shouldAutorotate方法中必须返回YES,视图才能旋转。我的问题是我想阻止一个视图旋转,如果我返回否,那么其他视图也不会旋转。这有什么办法吗?信息:在我的任何视图中,我都没有子类化UITabbarController


提前谢谢

理论上,您可以检入shouldAutorotate当前视图:

if ( currentView == viewThatShouldNotRotate )
    return NO;

但是,仅在更改视图控制器时才调用shouldAutorotate。如果只希望一个视图自动旋转,请考虑给它自己的视图控制器,UITabBar控制器可以作为模态视图呈现。不过,您必须自己处理导航逻辑。

使用ShouldAutoRotateToInterFaceOrientation:方法

 [self.navigationController 
 shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationPortrait];

我可以为同一视图控制器使用两个xib文件吗。我的意思是,如果手机处于横向,我可以切换到不同的视图xib,而不是视图控制器切换到新的视图控制器会使我将相同的代码复制到下一个视图控制器。通过“给它自己的视图控制器”,我的意思是,您应该调用UITabBarController上的presentModalViewController,并使用希望以纵向或横向模式显示的视图控制器。UITabBarController应在shouldAutorotate中仅为纵向返回YES,而模态控制器应为纵向和横向返回YES。如有必要,在视图类的layoutSubviews选择器中编写代码,以实际重新排列横向视图或纵向视图。