时间:2021-05-19
前言
大家或许在iOS程序开发中经常遇到屏幕旋转问题,比如说希望指定的页面进行不同的屏幕旋转,但由于系统提供的方法是导航控制器的全局方法,无法随意的达到这种需求。一般的解决方案是继承UINavrgationViewController,重写该类的相关方法,这样虽然也能解决问题,但是在重写的过程中至少产生两个多余的文件和不少的代码,这显然不是我们想要的。下面就使用一种较底层的方法解决这个问题。
基本原理
动态的改变UINavrgationViewController的全局方法,将我们自己重写的supportedInterfaceOrientations、shouldAutorotate方法和导航控制器对象的方法进行替换即可。
准备工作
配置项目支持方向
代码实现
将下面的方法写在所有视图控制器的父类的viewDidLoad方法中,即可完成屏幕旋转方向的配置。
//获取当前视图控制器的旋转支持方法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);使用方法
在上面的父类中重写supportedInterfaceOrientations、shouldAutorotate,表示默认的屏幕旋转相关属性。
在之后的每个该试图控制器的子类中,可重写supportedInterfaceOrientations、shouldAutorotate方法,即可完成指定视图控制器方向的需求。
以上所述是小编给大家介绍的Runtime解决屏幕旋转问题的方法详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对网站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
ipadair屏幕旋转失灵怎么办?小编带来了ipadair屏幕不旋转解决方法,有很多果粉在使用ipadair的过程中遇到了同样的问题,该如何解决呢?请看下文
Android开发手机(三星)拍照应用照片旋转问题解决办法最近解决了一个令我头疼好久的问题,就是三星手机拍照图片旋转的问题,项目中有上传图片的功能,那么涉及到拍
Androidwebview旋转屏幕导致页面重新加载问题解决办法1.在create时候加个状态判断protectedvoidonCreate(Bundlesav
Android中屏幕密度和图片大小的关系详解前言Android中支持许多资源,包括图片(Bitmap),对应于bitmap的文件夹是drawable,除了dra
VC双画布消除屏幕闪烁实例详解在vc中贴图时,直接贴图到屏幕的CDC,会因为图面贴入的时间不同而造成屏幕的闪烁。解决这个问题的办法是先把图面画到内存画布上,在一