详解Android中Runtime解决屏幕旋转问题(推荐)
作者:Silktree 发布时间:2022-04-03 03:12:02
标签:runtime,屏幕,旋转
前言
大家或许在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


猜你喜欢
- 一、文件存储特点:openFileInput()和openFileOutput()读取设备上的文件。优点:适用于存储大量的数据,可以存储图片
- 使用WebClient和htmlunit实现简易爬虫import com.gargoylesoftware.htmlunit.WebClie
- 以前面试的时候经常会碰到这样的问题.,叫你写一下ArrayList.LinkedList.Vector三者之间的区别与联系:原先一直搞不明白
- 在 Eclipse 里新建好工程后,默认会有一个assets目录,在 Eclipse 中直接将准备好的 SQLite 数据库复制到该目录中,
- 本文实例为大家分享了Android GestureDetector实现手势滑动的具体代码,供大家参考,具体内容如下目标效果: 程
- 1、 流的继承关系,以及字节流和字符流。2、 节点流FileOutputStream和FileInputStream和处理流Buffered
- 一、什么是Memcached?Memcached是danga.com开发的分布式内存对象缓存系统,所谓分布式,意味着它不是本地的,而是基于网
- 本文实例讲述了Java泛型定义与用法。分享给大家供大家参考,具体如下:1. 泛型的由来先看如下代码:import java.util.Lis
- 1.首先解释一下什么是方法重载?方法重载是指在同一个类中方法同名,参数不同,调用时根据实参的形式,选择与他匹配的方法执行操作的一种技术。这里
- 描述输入一行字符串,分别统计出其中英文字母、空格、数字和其它字符的个数输入描述:控制台随机输入一串字符串输出描述:输出字符串中包含的英文字母
- 一、ThreadLocal简介多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般
- 初始化sp 内部将数据放到 xml 文件中,加载时首先会将硬盘中文件读取到内存中,这样加快了访问速度这次从源码开始,看看里面具体做了什么//
- 本文实例讲述了Java基于递归和循环两种方式实现未知维度集合的笛卡尔积。分享给大家供大家参考,具体如下:什么是笛卡尔积?在数学中,两个集合X
- 一.前言在日常的开发中,经常需要对方法参数进行校验(非空、长度等)。如果采用hardcode去校验(if..else..),会造成代码冗余,
- 本文实例为大家分享了Android实现信息弹出框的具体代码,供大家参考,具体内容如下layout下的dialog_common_layout
- 本文实例为大家分享了Android App自动更新通知栏下载的具体代码,供大家参考,具体内容如下版本更新说明这里有调用UpdateServi
- 本文实例为大家分享了Android实现五子棋游戏的具体代码,供大家参考,具体内容如下直接上效果图原理从棋盘到棋子,到开始下棋的各类点击事件,
- 1、产生原因其实显示黑屏或者白屏实属正常,这是因为还没加载到布局文件,就已经显示了window窗口背景,黑屏白屏就是window窗口背景。示
- 先唠叨几句啊,由于公司 * 已经搭好了我就不费那劲琢磨搭建 * 的事了,直接开撸上传lib。下图是我放组件库的地方,本来想一个module拉出一
- POM<dependency> <groupId>org.springframework.boot<