iOS 6.0旋转兼容的那点事

这两天问答系统里,问ios横竖屏切换、还有状态栏旋转的问题有点多,来些当心得,但愿遇到的人少走弯路;

先贴官方说明:
iOS 6.0 Release Notes:
Autorotation is changing in iOS 6. In iOS 6, the shouldAutorotateToInterfaceOrientation: method 
of UIViewController is deprecated.In its place, you should use the supportedInterfaceOrientationsForWindow: 
and shouldAutorotate methods.

在iOS 6.0以前咱们都是使用shouldAutorotateToInterfaceOrientation方法来控制视图、状态栏的旋转,可是iOS 6.0及之后
就要使用supportedInterfaceOrientations方法来控制旋转了;

因此向iOS 6.0兼容的须要手动添加supportedInterfaceOrientations 方法,来控制视图和
状态栏的旋转,还有两点须要说明:

一、在iOS 6.0以前,控制旋转的代码,无需和plist的中的Supported interface orientations一一对应,举个例子:
plist的Supported interface orientations选项中支持,Portrait(bottom home button)、Landscape(right home button),无Landscape(left home button)
方法shouldAutorotateToInterfaceOrientation中强制支持UIInterfaceOrientationLandscapeLeft编译执行没有任何问题,
可是在iOS 6.0中,若是在supportedInterfaceOrientations中添加UIInterfaceOrientationMaskLandscapeLeft编译正常,
运行过程当中,左旋转程序就会异常退出;因此程序支持旋转的,代码与plist必定要保持一致;

二、在Xcode 4.5以前旋转支持的是
UIInterfaceOrientationLandscapeLeft  
 UIInterfaceOrientationLandscapeRight
UIInterfaceOrientationPortrait              
 UIInterfaceOrientationPortraitUpsideDown

而Xcode 4.5 GM Seed及Xcode 4.5.1旋转支持的是(多了个All,还有Mask的修饰,Xcode 4.5以前是不识别的)
UIInterfaceOrientationMaskAll       UIInterfaceOrientationMaskLandscapeLeft UIInterfaceOrientationMaskLandscapeRight         UIInterfaceOrientationMaskPortrait UIInterfaceOrientationMaskPortraitUpsideDown
相关文章
相关标签/搜索