详解Android中Runtime解决屏幕旋转问题(推荐)

作者:Silktree 时间:2022-04-03 03:12:02 

前言

大家或许在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解决屏幕旋转问题的方法详解网站的支持!

来源:http://www.cnblogs.com/ToBeTheOne/p/5878095.html

标签:runtime,屏幕,旋转
0
投稿

猜你喜欢

  • Java 栈与队列实战真题训练

    2021-06-11 01:46:08
  • Java Validation方法入参校验实现过程解析

    2021-08-04 03:31:50
  • c#使用Dataset读取XML文件动态生成菜单的方法

    2022-07-14 22:52:20
  • Unity3D游戏开发数据持久化PlayerPrefs的用法详解

    2022-11-11 23:16:00
  • java 对数和指数计算方式

    2022-08-27 16:50:07
  • spring-cloud-gateway动态路由的实现方法

    2021-07-25 15:24:37
  • C#实现简易计算器功能(1)(窗体应用)

    2022-09-30 16:59:16
  • C#基于OLEDB获取Excel文件表结构信息的方法

    2022-03-06 07:29:44
  • Java多线程实现Runnable方式

    2022-06-29 17:09:46
  • Java 比较接口comparable与comparator区别解析

    2022-11-26 20:54:24
  • 如何基于Java实现对象List排序

    2022-01-28 03:59:16
  • Spring Boot中利用JavaMailSender发送邮件的方法示例(附源码)

    2023-05-13 02:13:08
  • Android仿正点闹钟时间齿轮滑动效果

    2022-09-06 09:27:46
  • SpringMVC实现表单验证功能详解

    2023-09-24 09:07:28
  • 解决fastjson泛型转换报错的解决方法

    2023-04-02 03:10:44
  • c#实现flv解析详解示例

    2022-06-10 22:57:21
  • Java 数据结构之删除链表中重复的结点

    2023-11-28 15:36:22
  • C#开发中常用的加密解密方法汇总

    2021-09-06 23:35:49
  • MyBatis一二级缓存

    2021-07-03 13:01:59
  • Java单例模式、饥饿模式代码实例

    2022-04-15 22:22:06
  • asp之家 软件编程 m.aspxhome.com