您的位置:首页 > 移动开发 > IOS开发

iOS 6.0旋转兼容的那点事

2014-01-09 14:55 232 查看
这两天问答系统里,问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 方法,来控制视图和 状态栏的旋转,还有两点需要说明:

1、在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一定要保持一致;

2、在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: