为什么不使用UIViewController
自身可用的方法呢?
您可以根据需要在特定类中使用这些方法。
- (BOOL)shouldAutorotate
- (NSUInteger)supportedInterfaceOrientations
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
在您的 AppDelegate 中,您已经拥有此方法,您在其他任何地方都不需要它。
-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskAllButUpsideDown;
}
来自 Apple 文档
此方法返回界面方向以用于任何未明确指定自己的视图控制器。如果视图控制器没有覆盖 supportedInterfaceOrientations 或 shouldAutorotateToInterfaceOrientation: 方法,则使用此方法返回的方向。
如果您不实现此方法,应用程序将使用应用程序 Info.plist 的 UIInterfaceOrientation 键中的值作为默认界面方向。
如果使用更新UINavigationController
在这种情况下,您需要实现自定义UINavigationController
,因为您navigationController
可能会干扰您为不同视图控制器提供的界面方向。
自定义导航控制器.h
#import <UIKit/UIKit.h>
@interface CutomNavigationController : UINavigationController
@end
自定义导航控制器.m
#import "CutomNavigationController.h"
@interface CutomNavigationController ()
@end
@implementation CutomNavigationController
//overriding shouldRotate method for working in navController
-(BOOL)shouldAutorotate
{
return [self.visibleViewController shouldAutorotate];
}
-(NSUInteger)supportedInterfaceOrientations
{
return [self.topViewController supportedInterfaceOrientations];
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [self.topViewController preferredInterfaceOrientationForPresentation];
}
最后CustomNavigationController
在您的中使用它AppDelegate
,这将被navigationcontroller
所有视图控制器引用为您的