关于IOS,UIViewController屏幕旋转 博客分类: 本文将详细讲解ios的旋转问题iphone ios旋转
关于ios上面旋转的问题,ios6以下我们大家都知道,
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfacOrientation
这个函数在旋转的时候会进行调用,并且我们还可以手动设置屏幕方向:
[UIApplicationsharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft;
然而,ios6以后,以上两个函数都被舍弃,那么如果我们现在有两个Controller,那么我们想第一个不支持旋转,第二个支持,那么我们该如何实现了,很简单, 如下图操作:
1、勾选你支持的方向,
2、在AppDelegate中,我们实现了UIApplicationDelegate,这个Delegate里面有一个io6后才加入的旋转api
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window;
此函数在进行了旋转操作后,会被调用,我们可以在这个函数里面进行处理,那些controller需要支持旋转,如:
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
if ([window.rootViewController isKindOfClass:NSClassFromString(@"UINavigationController")]) {
NSArray *arrays = [(UINavigationController *)window.rootViewController viewControllers];
// NSLog(@"[arrays lastObject] %@",[arrays lastObject]);
if (([[arrays lastObject] isKindOfClass:NSClassFromString(@"UIAlbumViewController")]
) {
return UIInterfaceOrientationMaskAll;//这里需要支持旋转
}
}
return UIInterfaceOrientationMaskPortrait;
}
这里还需要注意的是,ios6我们一定要指定Window的rootviewController,这样才能转起来。