关于IOS,UIViewController屏幕旋转

关于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,这样才能转起来。

猜你喜欢

转载自374016526.iteye.com/blog/1912233