Runtime解决屏幕旋转问题

作者: 不睡觉的鸟 | 来源:发表于2016-09-17 10:56 被阅读99次

前言

大家或许在iOS程序开发中经常遇到屏幕旋转问题,比如说希望指定的页面进行不同的屏幕旋转,但由于系统提供的方法是导航控制器的全局方法,无法随意的达到这种需求。一般的解决方案是继承UINavrgationViewController,重写该类的相关方法,这样虽然也能解决问题,但是在重写的过程中至少产生两个多余的文件和不少的代码,这显然不是我们想要的。下面就使用一种较底层的方法解决这个问题。

基本原理

动态的改变UINavrgationViewController的全局方法,将我们自己重写的supportedInterfaceOrientationsshouldAutorotate方法和导航控制器对象的方法进行替换即可。

准备工作

配置项目支持方向

949397-20160917104849336-1755716820.png

代码实现

将下面的方法写在所有视图控制器的父类的viewWillApear方法中,即可完成屏幕旋转方向的配置。

//获取当前视图控制器的旋转支持方法
Method selfMtihod = class_getInstanceMethod([self class], @selector(shouldAutorotate));
//获取当前导航控制器的旋转支持方法
Method navr = class_getInstanceMethod([self.navigationController class], @selector(shouldAutorotate));
//交换方法
method_exchangeImplementations(selfMtihod, navr);

//以下同理
Method selfOrientation = class_getInstanceMethod([self class], @selector(supportedInterfaceOrientations));
Method navrOrientation = class_getInstanceMethod([self.navigationController class], @selector(supportedInterfaceOrientations));
method_exchangeImplementations(selfOrientation, navrOrientation);

使用方法

  • 在上面的父类中重写supportedInterfaceOrientationsshouldAutorotate,表示默认的屏幕旋转相关属性。
  • 在之后的每个该试图控制器的子类中,可重写supportedInterfaceOrientationsshouldAutorotate方法,即可完成指定视图控制器方向的需求。

相关文章

  • Runtime解决屏幕旋转问题

    前言 大家或许在iOS程序开发中经常遇到屏幕旋转问题,比如说希望指定的页面进行不同的屏幕旋转,但由于系统提供的方法...

  • 屏幕旋转

    屏幕旋转 推荐文档 了解UIWindow——UIWindow实践 iOS屏幕旋转问题总结 IOS:屏幕旋转与变换 ...

  • 屏幕旋转

    在做工程的时候碰到了屏幕旋转的问题,如今已经解决.为大家分享一下 屏幕旋转机制流程 (1)加速计检测到方向变化,发...

  • Android游戏开发屏幕旋转问题完美解决

    做游戏Android上的游戏开发也有一年多了,虽然没有什么高深的见解,但就遇到的问题及解决方案做下记录 我们的游戏...

  • iOS 屏幕旋转 状态栏 隐藏问题

    一、首先说一下关于在做视频播放过程中,全屏时屏幕旋转的问题 如果程序的所有VC都不需要屏幕旋转,有两种解决方案:第...

  • 运行时runTime

    runtime在工作总遇到的问题: 1.runtime的几个问题 2.runtime解决重复点击UIButton的...

  • 11.runtime 理解 和 常用点

    问题 1.runtime 个人理解2.runtime 常用api3.runtime 日常运用解决问题4.runti...

  • 2017/3/10 周五

    GET MagicBook1.识别速度优化,确认半页识别率更高2.解决屏幕自动旋转问题:无法定位问题3.出现未知的...

  • 利用runtime,解决多次点击相同button,导致重复跳转的

    利用runtime,解决多次点击相同button,导致重复跳转的问题 利用runtime,解决多次点击相同butt...

  • rem 手机屏幕适配

    手机端屏幕适配解决方案(含屏幕旋转): danhuan 阅读笔记 2018.04.02文章:https://m...

网友评论

    本文标题:Runtime解决屏幕旋转问题

    本文链接:https://www.haomeiwen.com/subject/avoiettx.html