当前位置: 首页 > news >正文

ios8之后的界面旋转简单原理

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

调整约束优先级,不一定都是250.750或者1000

有时不管怎么调整,约束优先级都要大于某个值,只是焦点的俩个可以在大于某个值的范围内取大小值。

ios8之后不用interfaceOrientation属性来判断视图控制器方向,也不用willRotation方法来监测视图控制器旋转。iOS认为宽>高时为横屏,高>宽时为竖屏。因为ipad有分屏多任务的可能,可能屏幕没有旋转,但宽高大小改变,需要重新布局界面。而用- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator 代替willRotataion方法,在方法里size表示要目的界面的大小,这样在屏幕旋转和屏幕没旋转但试图控制器宽高大小改变时都会走该方法。在该方法里进行相应布局就可以,iPhone和iPad都适用。需要注意的是需要先调用super 该方法。

- (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection

  withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator方法在屏幕方向发生旋转时也可以监测到。iPhone上实验通过,iPad没走通。也需要先super 该方法。然后调用[coordinator animateAlongsideTransition:^(id <UIViewControllerTransitionCoordinatorContext> context) { block …...} completion:nil];

在block的位置,可以根据newCollection的horizontalSizeClass和verticalSizeClass来判断是什么设备什么方向。这俩个值是枚举类型,分为regular普通和compact紧密俩个种类

ipad不论横竖屏,俩个方向均是regural的

iPhone 竖屏时,horizontalSizeClass为compact的

         而verticalSizeClass为regular的

横屏时,俩个方向均是compact的。

在5上没问题检测过,但ipad air2上不行,原因暂不明。

compact的值为1,而regular的值为2.

随着设备的变化,这个分类也会发生变动和更新。

参考:http://www.cocoachina.com/industry/20140729/9269.html

http://www.cocoachina.com/ios/20141026/10045.html

http://www.mamicode.com/info-detail-246989.html

转载于:https://my.oschina.net/u/2560887/blog/734279

相关文章:

  • 设计模式之桥接模式(Bridge模式)
  • jsdoc文档
  • ESXI虚拟化增加系统盘容量
  • php过滤textarea 中的换行符问题
  • Unity3D-光照贴图技术
  • 说说动画卡顿的解决方案
  • ffmpeg从AVFrame取出yuv数据到保存到char*中
  • Keepalived工作原理详解及配置实例
  • 差分进化算法 DE-Differential Evolution
  • 使用IDEA社区版开发Web项目
  • centos7下搭建zabbix监控
  • 第一个小项目
  • 一致性hash和solr千万级数据分布式搜索引擎中的应用
  • div文字左右上下居中方法
  • return false
  • 【笔记】你不知道的JS读书笔记——Promise
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • ComponentOne 2017 V2版本正式发布
  • Date型的使用
  • ES6简单总结(搭配简单的讲解和小案例)
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • JavaScript服务器推送技术之 WebSocket
  • JS笔记四:作用域、变量(函数)提升
  • k个最大的数及变种小结
  • Linux各目录及每个目录的详细介绍
  • PV统计优化设计
  • rc-form之最单纯情况
  • Web设计流程优化:网页效果图设计新思路
  • 分类模型——Logistics Regression
  • 浏览器缓存机制分析
  • 微服务框架lagom
  • 线上 python http server profile 实践
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • ​2020 年大前端技术趋势解读
  • ​2021半年盘点,不想你错过的重磅新书
  • ​低代码平台的核心价值与优势
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​什么是bug?bug的源头在哪里?
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #Spring-boot高级
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (04)odoo视图操作
  • (1)(1.9) MSP (version 4.2)
  • (1)Android开发优化---------UI优化
  • (TOJ2804)Even? Odd?
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (五)MySQL的备份及恢复
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (原創) 物件導向與老子思想 (OO)
  • .cfg\.dat\.mak(持续补充)
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NetCore项目nginx发布