1,首先说一下,ios6之前的系统 ,旋转控制,
利用
shouldAutorotateToInterfaceOrientation:
来单独控制某个UIViewController的旋屏方向支持
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
2,但是再ios6 的系统上,上述方法被弃用了,取而代之的是以下2个方法,设置某个viewcontroller 的旋转
- (BOOL)shouldAutorotate{
if (self.preferredInterfaceOrientationForPresentation ==UIInterfaceOrientationMaskLandscapeLeft || self.preferredInterfaceOrientationForPresentation ==UIInterfaceOrientationMaskLandscapeRight) {//支持横屏
return YES;
}
return NO;//禁止旋转
}
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
// return UIInterfaceOrientationMaskPortrait; //禁止旋转
}
除了这个2个方法之外,还要再把程序的所有viewcontroller的添加,用以下方法替代
// [window addSubview:testUserViewController_.view];替换为:
window.rootViewController =testUserViewController_;
3, 如果整体程序的viewcontroller 都不需要旋转,在appdelegate 中调用该方法
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
return UIInterfaceOrientationMaskPortrait;
}
4,所以在做系统版本适配的时候,应该把1,2中的方法同时使用,程序会在不同系统版本的情况下去调用相应的设置方法。