ios屏幕的旋转,Device Orientation

2023-11-02

屏幕旋转,我的理解是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:self
                                         selector:@selector(receiverNotification)
                                             name:UIDeviceOrientationDidChangeNotification
                                           object:nil];


当然还可以使用transform的方式来直接旋转UIVIew或window, 但我认为这些并不算屏幕旋转的范畴,可以在以后讨论动画的时候再说。



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ios屏幕的旋转,Device Orientation 的相关文章

  • 地球坐标,火星坐标,百度坐标转换

    标准地球坐标即GPS设备获得的坐标 该坐标需要经过国家测绘局进行加密后形成火星坐标 WGS 84 我们用的google坐标和高德地图坐标也就是火星坐标 百度地图 在火星坐标的基础上再进行一次加密 形成了百度地图上的坐标 因此 直接将标准地球
  • 一个奇怪的GCD内存不释放的问题

    这个问题是我的同学提出来的 原帖在http bbs csdn net topics 390933411 大概是这样 pre class objc IBAction touchToCreateThread id sender int i 10
  • objc学习笔记-基础

    1 xcode 4 3 3以后 NSAutoreleasePool 的用法发生改变 由 NSAutoreleasePool pool NSAutoreleasePool alloc init pool drain 变为 autoreleas
  • APP开发如何批量生成不同尺寸的图标?

    在我们开发APP的时候 我们使用到大量的不同尺寸的APPLogo的图片 如下图 通常 我们的做法是和设计师沟通 让他们切出这儿所以的图片 然后我们一个一个图片放在对应的位置 这样处理的话 我们比较容易出错 比如说 图片的格式 苹果对图片的格
  • ad Hoc打包测试

    一 iOS证书 首先介绍一下iOS证书 iOS证书分两种 1 开发证书 用来给你 开发人员 做真机测试 2 发布证书 又分为两种 发布到app store 和发布测试的ad hoc证书 本文就详细讲解 ad hoc证书的创建 二 什么时候用
  • iOS左对齐自动换行collection样式

    前言 想必大家工作中或多或少会遇到下图样式的UI需求吧 像这种cell长度不固定 以此向右对齐排列的样式UI可以说是很常见的 实现方式 一般的实现可能主要是分一下两种 1 一种是用button依次排列实现 动态计算text宽度 记录之前一个
  • UITableView性能优化-一次面试后的反思总结

    面试的时候遇到这个问题 竟一时没有全答上来 于是Google了一下 常见的一些譬如Cell重用 设计统一Cell 缓存Cell高度 Cell数据资源缓存 这些其实平时都在用 但因为平时还是缺乏总结 回答这么个问题的时候却只想到说 重用 缓存
  • Swift open public等修饰符详解

    swift 中关于open public internal fileprivate private 修饰的说明 open 用open修饰的类可以在本某块 sdk 或者其他引入本模块的 sdk module 继承 如果是修饰属性的话可以被此模
  • 编程艺术 - 第一章 左旋转字符串

    题目 定义字符串的左旋转操作 把字符串前面的若干个字符移动到字符串的尾部 若把字符串abcdef左旋转2位得到字符串cdefab 请实现字符串左旋转的函数 要求对长度为n的字符串操作的时间复杂度为O n 空间复杂度为O 1 类似题目还有剑指
  • iOS下XMPP开发之XMPP开发环境配置(二)mac上搭建openfire服务器

    一 下载并安装openfire 1 到http www igniterealtime org downloads index jsp下载最新openfire for mac版 比如 Openfire 3 8 1 下载后的文件 openfir
  • unity 五种旋转方式localEulerAngles、eulerAngles、rotation、localRotation和Rotate的区别

    1 1 transform localEulerAngles 使用localEulerAngles进行旋转的时候 我们要使用transform localEulerAngles new Vector3 x y z 其中 new Vector
  • 应用程序本地化

    一 简介 使用本地化功能 可以轻松地将应用程序翻译成多种语言 甚至可以翻译成同一语言的多种方言 如果要添加本地化功能 需要为每种支持的语言创建一个子目录 称为 本地化文件夹 通常使用 lproj作为拓展名 当本地化的应用程序需要载入某一资源
  • iOS开发之内存管理

    iOS开发之内存管理 一 垃圾回收机制 二 内存管理的概念 三 OC内存管理注意事项 四 MRC相关语法 一 垃圾回收机制 与Java语言相同Objective c 2 0之后 也提供了垃圾回收机制 OC是支持垃圾回收机制的 Garbage
  • iOS中自动消失提示框的实现

    iOS中自动消失提示框的实现 添加一个提示框 UIAlertView alert UIAlertView alloc initWithTitle 提示 message 你很漂亮 delegate self cancelButtonTitle
  • IOS开发系列——异步绘制专题

    异步绘制专题 1 图片处理 1 1 编辑图片的几个方法 第一种 先用UIImage对象加载一张图片 然后转化成CGImageRef放到CGContext中去编辑 第二种 用CGImageCreate函数创建CGImageRef 然后把CGI
  • iOS代码混淆初探

    iOS代码混淆初探 在没有对应用的代码做过特殊处理的情况下 一般应用的代码中的类名和方法都是明文的 在逆向分析中 通过class dump获取MachO可执行文件中的所有类 定义的方法和属性 就能很快的从名字入手猜到这个方法是做什么用的 所
  • 旋转 UIAlertView

    我创建了一个自定义 UIAlertView 通过子类化它并弄乱它的show函数 它有一些自定义子视图并且具有非标准尺寸 当我创建并显示它时 它工作正常 但是 当旋转设备时 警报会旋转 然后返回到其默认大小 任何想法要覆盖什么功能 或者我应该
  • 防止AlertView自动旋转

    我的应用程序的启动页面设置为portrait仅用这一点代码 NSUInteger supportedInterfaceOrientations return UIInterfaceOrientationMaskPortrait 当应用程序启
  • javascript 事件的 deviceorientation 在 chrome android 中未触发

    I am trying to fire deviceorientation event of javascript but event is not firing in my android device please check out
  • 如何将某些视图的自旋转限制为单一方向,同时允许其他视图的所有方向?

    这个问题是关于 iOS 设备旋转和 UINavigationController 中的多个受控视图 有些观点应该是仅限于纵向方向 有些应该自由自转 如果您尝试使用三个视图创建最简单的设置 您会注意到自动旋转行为有一些非常令人讨厌的怪癖 然而

随机推荐

  • 【基础知识】ubuntu学习笔记

    参考 The Linux Command Line 中文版 ctrl alt T打开命令行终端 Ctrl Shift C 复制 Ctrl Shift V 粘贴 Ctrl Shift W 关闭标签页 ctrl shift T 在当前终端打开一
  • SpringCloudConfig 一直报错 Cannot clone or checkout repository

    配置都没有问题 git也验证了 都可以发现问题 用户名密码也正确就是 报错 无法从git中检出 也想过过是https的问题 但是github com 用的授信的证书 但是最终还是https的原因 找了好久终于通过设置忽略https 成功了
  • Python+Docker+Redis-实现分布式爬取阳光问政

    sun political 一 编写爬虫代码 1 创建项目 pip install scrapy scrapy redis i https pypi tuna tsinghua edu cn simple scrapy startproje
  • 配置时间格式spring:jackson:date-format:yyyy-MM-dd HH:mm:ss

    配置时间格式 spring jackson date format yyyy MM dd HH mm ss
  • [密码学复习]Cryptography

    整合 Week 2对称加密 Two requirements A strong encryption algorithm A secret key known only to participants 1 有三部分构成 1 加密算法 2 可
  • JAVA集成国密SM3

    JAVA集成国密SM3加密 验签 一 pom配置 二 加密代码集成 2 1 目录结构 2 2 源码 2 3 测试 三 验签代码集成 2 1 目录结构 2 2 源码 2 3 测试 四 相关链接 国密算法概述 https blog csdn n
  • 超威主板关闭超线程教程

    说明 在使用超威主板的服务器的时候发现 关闭超线程要比开启超线程性能表现优越一些 服务器超线程默认是开启的 故而需要关闭超线程的服务 注 本文不是广告 只是有人经常咨询 故而记录了一个简单的流程步骤 与大家共勉 一 开机 开机之后等待开机界
  • 2019年DNS服务器速度测评【DNS速度排名】

    2019年DNS服务器速度测评 DNS速度排名 已经进入2019年了 很多喜爱玩游戏的用户都会在网上搜索什么DNS最快 什么dns玩游戏快 什么dns好等等 这些关于dns排名的问题 本站就这些问题进行了整合 最后总结出两大类 第一类是浏览
  • redis命令,SpringBoot整合Redis6,主从复制,哨兵模式,集群,springCache初高级应用。

    目录 1 Docker安装Redis 2 Redis的基础 2 1 redis的key命令 2 2 reids的数据结构 6 0新增的数据结构 1 String 字符串 类型 2 List 列表 类型 3 set 集合 类型 4 Hash
  • 20道java集合源码面试题,请笑纳

    问题一 看到这个图 你会想到什么 答 这个图由Map指向Collection的Produces并不是说Map是Collection的一个子类 子接口 这里的意思是指Map的KeySet获取到的一个视图是Collection的子接口 我们可以
  • 数据结构----结构--线性结构--字符串

    数据结构 结构 线性结构 字符串 一 字符串的定义方式 第一种 char str1 Hello 第二种 char str2 Hello 区别 1 所在区域不同 str1在常量区 str2在这里的写法是在栈区 2 元素是否可改 str1中的元
  • Keil STM32 不包含头文件或声明函数直接调用函数导致的异常问题

    问题 调用函数GetAmbientTemperature 获取返回值 打印出来的很大的异常数字 打印结果 解决 参考 关于Keil5调用函数不包含对应头函数问题总结 导致问题原因就是 没有包含对应函数头文件 编译虽然不会报错 但是读不到函数
  • 矩阵系统全方位管理多平台1000多个账号,实现精准化运营获客!

    全自动化视频综合处理工具 普通的剪辑软件是不可能实现自动化 一个人一天制作3000 条视频 必须要借助高效率的工具 呆头鹅批量剪辑软件 探店混剪系统 导入大量的素材 就能自动帮你批量处理 满足各大商业用户的需求 我们的软件确保你能够一天迅速
  • 根文件系统rootfs制作——使用buildroot工具(重制版)

    根文件系统rootfs制作 使用buildroot工具 重制版 0 前言 一 rootfs配置 1 下载buildroot源码 2 开始配置 Target options配置如下 Toolchain 交叉工具链配置 根据自己的环境配置 Sy
  • 用Qlabel显示pixcelmap时出现的图像扭曲的处理

    在一个将RGB图像转换为灰度图的程序中 用Qlabel显示灰度图时 出现了图像扭曲的问题 cv Mat gimg cv cvtColor original image gimg CV BGR2GRAY image gimg img QIma
  • 3.4 迭代法

    4 1 雅克比迭代法 雅可比迭代法是一种用于求解线性方程组的迭代算法 其基本思想是将线性方程组中的系数矩阵拆分为对角线矩阵和非对角线矩阵两部分 并利用对角线矩阵的逆矩阵来迭代求解方程组 具体地 设线性方程组为Ax b 其中A为系数矩阵 b为
  • C++桥接模式:Bridge Pattern

    在现实生活中 某些类具有两个或多个维度的变化且这多个维度都可能需要后期扩展 如图形既可按形状分 又可按颜色分 如何设计类似于 Photoshop 这样的软件 能画不同形状和不同颜色的图形呢 如果用继承方式 m 种形状和 n 种颜色的图形就有
  • Apache shiro学习笔记+ spring整合shiro (一)

    Apache Shiro官网 http shiro apache org 概念 shiro是一个强大灵活的开源安全框架 可以干净利落的处理认证 授权 企业会话管理和加密 shiro的首要目标是简单和易于理解 安全有时候是非常复杂令人头疼的问
  • 鸢尾花分类预测数据分析

    鸢尾花分类预测数据分析 目标 根据未知种类鸢尾花的特征预测其种类 数据 鸢尾花数据集 分析 描述性分析 探索性分析 建模分析 模型分析 迭代分析 成果 位置种类鸢尾花的预测结果 import numpy as np import matpl
  • ios屏幕的旋转,Device Orientation

    屏幕旋转 我的理解是ios设备根据重力感应改变屏幕的方向 那么如何在屏幕转动后变换UI 或则保持原样呢 ios设备支持4个方向 UIInterfaceOrientationPortrait UIInterfaceOrientationPor