【iOS】ios6.0 UINavigationController支持屏幕自动旋转
问题描述:
当从页面A跳转到页面B时,使用的是UINavigationController的presentViewController:animated:completion:方法。如果页面A是纵向UI,而页面B则在xib配置中是横向UI,不论在B的viewController实现文件中如何设置,从A到B跳转后,B为纵向显示,无法受其控制。
原因:
猜测是因为presentViewController:animated:completion:时,旋转控制权在parentViewController上,B页面无法拿到控制权。
解决方案:
重写UINavigationController的旋转方法,使viewController能够拿到旋转权。
代码如下:
UINavigationController+Rotation_IOS6.h
@interface UINavigationController (Rotation_IOS6) -(BOOL)shouldAutorotate; -(NSUInteger)supportedInterfaceOrientations; -(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation; @end
UINavigationController+Rotation_IOS6.m
@implementation UINavigationController (Rotation_IOS6) -(BOOL)shouldAutorotate { return [[self.viewControllers lastObject] shouldAutorotate]; } -(NSUInteger)supportedInterfaceOrientations { return [[self.viewControllers lastObject] supportedInterfaceOrientations]; } - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation]; } @end
作者:风倾清凌
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.