iOS6 UI 旋转问题

目前还是菜鸟阶段,遇到问题基本都google

目前在做一个iOS项目,要求UI界面适应旋转,
iOS要求 5.1以上

参考官方文档:
[url]https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/RespondingtoDeviceOrientationChanges/RespondingtoDeviceOrientationChanges.html[/url]

--------------------------------------------------------------------
[b]iOS 5.1[/b]
在iOS 5.1上支持UI随设备旋转,基本就是实现下面的方法


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return YES;
}


--------------------------------------------------------------------

[b]iOS 6.0+[/b]
在iOS 6上支持UI随设备旋转的方法在网上查了查多数是说要实现另外两个方法(如下)。

- (NSUInteger)supportedInterfaceOrientations

- (BOOL)shouldAutorotate


但是我的代码原本是4.0以前build的工程,我将deployment target设置为5.1, 打算支持iOS5.1以上的设备, 于是在ViewController里面实现了上面两个方法,模拟器测试,均无任何反应。网上google了半天,也顺带磨了半天官方文档,简单解决方案如下:

1. 工程的TARGETS的Summary里面设置下: Supported Interface Orientations

2. 修改附加view的方式
一般情况下,以前的工程有一个MainWindow.xib文件,这个文件中会指定window,rootviewController, Delegate等等,那么在工程的***Delegate.m中应该会将view附加到window中,那马iOS4.0以前的做法是这样的

[self.window addSubview:navController.view];


这种做法的话,在iOS6设备中,即便你实现了上面的两个方法也无法支持旋转的。
我们可以修改为如下:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.0) {
// for iOS6.x Rotate
self.window.rootViewController = navController;
} else {
[self.window addSubview:navController.view];
}


以上两步完成之后(不需要实现那两个方法),在iPhone模拟器中试试看,可以看出Portrait,LeftLandscape, RightLandscape已经可以了,至于PortraitUpDown不行是因为iPhone中UIViewController自己默认只支持前面3种旋转(这个大家都知道)


----------
如果想要支持PortraitUpDown,此时就需要将上面的navController子类化,然后在其子类中实现之前的两个方法即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值