博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

[转] 关于IOS,UIViewController屏幕旋转

Posted on 2013-09-24 10:09  勿以己悲  阅读(729)  评论(0)    收藏  举报
 
 
  关于ios上面旋转的问题,ios6以下我们大家都知道,
  - (BOOL)shouldAutorotateToInte***ceOrientation:(UIInte***ceOrientation)inte***cOrientation
  这个函数在旋转的时候会进行调用,并且我们还可以手动设置屏幕方向:
  [UIApplicationsharedApplication].statusBarOrientation = UIInte***ceOrientationLandscapeLeft;
  然而,ios6以后,以上两个函数都被舍弃,那么如果我们现在有两个Controller,那么我们想第一个不支持旋转,第二个支持,那么我们该如何实现了,很简单, 如下图*作:
  1、勾选你支持的方向,
  2、在AppDelegate中,我们实现了UIApplicationDelegate,这个Delegate里面有一个io6后才加入的旋转api
  - (NSUInteger)application:(UIApplication *)application supportedInte***ceOrientationsForWindow:(UIWindow *)window;
  此函数在进行了旋转*作后,会被调用,我们可以在这个函数里面进行处理,那些controller需要支持旋转,如:
  - (NSUInteger)application:(UIApplication *)application supportedInte***ceOrientationsForWindow:(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 UIInte***ceOrientationMaskAll;//这里需要支持旋转
  }
  }
  return UIInte***ceOrientationMaskPortrait;
  }
  这里还需要注意的是,ios6我们一定要指定Window的rootviewController,这样才能转起来。