iOS 6.0以上版本的旋屏控制处理

iOS6.0及以上版本中控制器旋转控制方式解析
本文详细介绍了iOS6.0及之后版本中,控制器旋转支持的函数变化,从shouldAutorotate到supportedInterfaceOrientations的转换,并阐述了在6.0以上版本中,旋转控制被移至navigationController的原因。通过自定义NavigationController来处理旋转控制,实现不同orientation下的应用适配。

我们都知道,在iOS 6.0以下,支持旋屏的函数如下:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

我们只要对不同的interfaceOrientation返回YES或NO即可支持对应的屏幕旋转。在6.0以后,旋转函数改为:

- (NSUInteger)supportedInterfaceOrientations

需要自己返回对应的orientations。

但是在实践中发现,当个controller的supportedInterfaceOrientations根本没有调用。经过查看资料分析,原来在6.0以上,旋屏的控制放在了navgationController,所以我们需要自定义一个navgationController,定义相关的变量来处理是否支持旋转。

//写子类NavigationController的目的是因为6.0以上,把旋屏的控制放在了UINavigationController

 @interface LRNavigationController : UINavigationController

 //是否支持旋屏幕

@property(nonatomic,assign)BOOL shouldRotate;

 @end

实现如下:

@implementation LRNavigationController

 @synthesize shouldRotate = _shouldRotate;

#pragma  mark roate method

- (BOOL)shouldAutorotate

{

    return_shouldRotate;

}

 - (NSUInteger)supportedInterfaceOrientations{

    return_shouldRotate ? UIInterfaceOrientationMaskAllButUpsideDown : UIInterfaceOrientationMaskPortrait;

}

这样在6.0以上,就可以通过获取navgationController更改_shouldRotate的值,实现旋转的控制。

 

 

转载于:https://www.cnblogs.com/vicstudio/archive/2013/05/27/3102621.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值