ios屏幕的旋转,Device Orientation
屏幕旋转,我的理解是ios设备根据重力感应改变屏幕的方向。那么如何在屏幕转动后变换UI?或则保持原样呢?
ios设备支持4个方向,UIInterfaceOrientationPortrait,UIInterfaceOrientationPortraitUpsideDown,UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight。
设置屏幕旋转支持方向的方法有2个
1. 在xcode中选择相应的项目,然后在右边设置页面中选择General,最后在Device Orientation可以选择支持的旋转方向,如下图
2. 另一个方法
IOS 6.0以上
当设备发生旋转时会调用主window的rootViewController或最顶层的ViewController的shouldAutorotate询问是否可以自动旋转,当允许旋转后会再调用supportedInterfaceOrientation。
UIViewController * _controller = [[UIViewController alloc] init];
CustomNav * _nav = [[CustomNav alloc] initWithRootViewController:_controller];
[self.window setRootViewController:_nav];
@implementation CustomNav : UINavigationController
- (BOOL)shouldAutorotate
{return [self.topViewController shouldAutorotate];
}- (NSUInteger)supportedInterfaceOrientations
{return [self.topViewController supportedInterfaceOrientations];
}
@end
如果想让某几个页面不转动或只支持特定的方向转动可以重写响应UIViewController的shouldAutoroate和supportedInterfaceOrientations方法
IOS 6.0 以下,需重写shouldAutorotateToInterfaceOrientation:UIInterfaceOrientation
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{if ( toInterfaceOrientation == UIDeviceOrientationPortrait ) {return YES;} else {return NO;}
}
2种方法可以结合使用,但supportedInterfaceOrientations返回值必须要包含object中设置的值,否则会引起crash。
另外如果将UINavigationController做为rootViewController,在pop时会重新调用shouldAutoroate和supportedInterfaceOrientations,小伙伴们看看是否可以利用一下。
还可以通过监听的方式来获知屏幕旋转,但不能控制旋转。
首先必须设置window的rootViewController,否则无法监听到屏幕旋转的消息
[self.window setRootViewController:_nav];[self.window addSubview:_nav.view];[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(receiverNotification)name:UIDeviceOrientationDidChangeNotificationobject:nil];
当然还可以使用transform的方式来直接旋转UIVIew或window, 但我认为这些并不算屏幕旋转的范畴,可以在以后讨论动画的时候再说。
ios屏幕的旋转,Device Orientation相关推荐
- 关于IOS屏幕的旋转问题
处理IPhone屏幕的旋转是我们经常遇到的,当你做一个应用既然满足竖屏又要满足横屏,这就要求我们会处理屏幕旋转的问题! 方法一:自动布局 1.将项目中界面的四种手持方式都点上: 2.取消Use Aut ...
- iOS屏幕自动旋转 以及横屏模式打开APP出现的问题
首先 项目配置 设置支持方向 创建 UINavigationController父类. tabbar 父类 . uiviewcontroller 父类 UINavigationController ...
- iOS屏幕旋转 浅析
一.两种orientation 了解屏幕旋转首先需要区分两种orientation 1.device orientation 设备的物理方向,由类型UIDeviceOrientation表示,当前设备 ...
- iOS屏幕旋转及其基本适配方法
屏幕旋转示例.jpeg 前段时间抽空总结了一下iOS视频播放的基本用法,发现这其中还有一个我们无法绕过的问题,那就是播放界面的旋转与适配.的确,视频播放与游戏类型的App经常会遇到这个的问题.由于至今 ...
- iOS屏幕旋转那些事
前些日子处理了一些关于页面中的屏幕旋转的事情,需要根据某个页面的不同旋转方向去做不同的处理,现在再次总结一下,以在心里有个系统的体系,也可以当成工具文章查询. 首先来看第一个方法: [UIDevice ...
- iOS 屏幕旋转问题总结
1.两个Orientation 1.1设备的物理方向(UIDeviceOrientation) typedef NS_ENUM(NSInteger, UIDeviceOrientation) {UID ...
- ios屏幕旋转学习笔记
加速计是整个IOS屏幕旋转的基础,依赖加速计,设备才可以判断出当前的设备方向,IOS系统共定义了以下七种设备方向: typedef NS_ENUM(NSInteger, UIDeviceOrienta ...
- iOS屏幕旋转技术点及解决方案总结
1.屏幕旋转相关枚举 关于屏幕旋转枚举一共有3种: UIInterfaceOrientation, UIInterfaceOrientationMask, UIDeviceOrientati ...
- iOS的push方法推出控制器界面中单个屏幕的旋转问题
前言 相信很多人都遇到屏幕旋转的的问题,尤其push方法推出控制器的view的时候,很遇到很多的问题,我之前遇到问题就是很坑的问题,连续反复push方法.pop方法推出和退出需要横屏控制器的显示的时候 ...
最新文章
- 正则:匹配一个汉字姓名
- 拉格朗日乘数法的原理,我用10幅图把它讲清楚了
- 5、Dcoker 容器数据卷用-v命令添加
- 参数cluster_interconnect详细介绍
- 解决pycharm安装包过程出现的问题:module 'pip' has no attribute 'main'
- phpMyAdmin - Error
- springboot 整合mybatis_SpringBoot整合Mybatis、MybatisPuls
- c语言判断字符是汉字,c语言里面判断字符是否为汉字
- PHP选项、信息函数(转)
- Python编程基础14:数据库编程
- 贝叶斯信念网络Bayes Belief network
- java 解析xml文件案例
- 基于FPGA ZC706的AD9371ADRV9009网口驱动配置
- 第一节 计算机硬件组成
- AVX AVX2 To enable them in other operations
- TwinCAT 3 file记录日志txt文件程序
- Pubg九月十六日服务器维护,绝地求生9月16日停机更新公告:绝地求生几点开始停机维护...
- DBLP数据集用weka数据挖掘 xml转csv格式文件
- PDF如何裁剪页面,PDF裁剪页面的方法
- AE2022 for Mac安装包+安装教程