您的位置:首页 >聚焦 >

iOS 屏幕旋转的设置方法_今日快讯

2023-04-22 01:21:34    来源:博客园


(资料图)

VC上屏幕旋转的方式有2种1.因重力导致的屏幕旋转条件:shouldAutorotate返回true,设备开启了屏幕旋转开关。设备发生重力旋转。2.单页面强制旋转条件:无。设置设备旋转方向。
NSNumber *orientationTarget = [NSNumber numberWithInteger:isLaunchScreen ? UIInterfaceOrientationLandscapeRight : UIInterfaceOrientationPortrait];[[UIDevice currentDevice] setValue:orientationTarget forKey:@"orientation"];
其中重力旋转要满足的条件至少2个,AppDelegate代理设置和ViewController页面设置而页面强制旋转只有满足AppDelegate代理设置就可以了。旋转开关权限优先级旋转开关权限优先级,决定了屏幕是否可以选择a.AppDelegate代理 > App-General设备设置/info.plist 支持屏幕旋转, (App-General设备设置和info.plist是同步联动的,它们是APP启动前的预设,AppDelegate代理是App启动后的动态更改,可以覆盖前面启动前的设置)b.ViewControll下的容器控制器也支持旋转,UINavigationController容器, UITabBarController容器设置的shouldAutorotate返回truec.当前ViewController设置的shouldAutorotate返回true。简单重力屏幕旋转设置1.AppDelegate代理设置
// ,AppDelegate代理是App启动后的动态更改,可以覆盖启动前的设置,所以它的优先级最大func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {    if isLaunchScreen {        return .landscapeRight    } else {        return .portrait    }}
2.ViewController页面设置控制单个ViewController的旋转使用下面三个方法
// 1.是否支持屏幕旋转,只有返回true, 下面的两个方法才会执行open var shouldAutorotate: Bool { get }// 2.页面支持的屏幕方向@available(iOS 6.0, *)open var supportedInterfaceOrientations: UIInterfaceOrientationMask { get }// 3.页面进入时的屏幕方向@available(iOS 6.0, *)open var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation { get }
复杂重力屏幕旋转设置复杂重力屏幕旋转需要满足如下条件:容器控制器的屏幕旋转范围要大于等于孩子控制器的屏幕旋转范围,否则配置传递中断,无法做重力旋转。以普通的APP页面结构为例通常的APP页面ViewController组织结构为:UIApplicationwindow它的根控制器rootViewController为UITabBarControllerUITabBarController下有多个子控制器,它们用UINavigationController包裹着
UINavigationController->UIViewControllerUINavigationController->UIViewControllerUINavigationController->UIViewControllerUINavigationController->UIViewController
根控制器设置UITabBarController容器控制器
verride var shouldAutorotate: Bool {    return ((self.selectedViewController?.shouldAutorotate) != nil)}override var supportedInterfaceOrientations: UIInterfaceOrientationMask {    return self.selectedViewController?.supportedInterfaceOrientations}override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {    return self.selectedViewController?.preferredInterfaceOrientationForPresentation}
UINavigationController容器控制器
override var shouldAutorotate: Bool {    return self.topViewController?.shouldAutorotateoverride var supportedInterfaceOrientations: UIInterfaceOrientationMask {    return self.topViewController.supportedInterfaceOrientations}override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {    return self.topViewController.preferredInterfaceOrientationForPresentation}
单ViewController设置
// ViewControlleroverride var shouldAutorotate: Bool {    return true}override var supportedInterfaceOrientations: UIInterfaceOrientationMask {    return .landscape}override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {    return .landscapeLeft}  
屏幕旋转的常见使用场景Modal出场方式因为没有了容器视图,可以剩去了中间2个容器的传递。对于APP中主要页面竖屏,部分页面横屏的解决方法。1.简单强制旋转a.在AppDelegate和单ViewController设置好选择属性后,强制旋转b.进入页面时强制横屏,退出时强制竖屏2.复杂重力旋转a.全局权限设置支持旋转的方向b.自定义Tab控制器和Navigation控制器,处理子ViewController与容器ViewController的旋转配置传递c.自定义ViewControl基类,添加基础旋转配置,d.子类ViewControl中做自定义旋转配置。旋转适配ViewController的旋转适配
/*     This method is called when the view controller"s view"s size is changed by its parent (i.e. for the root view controller when its window rotates or is resized).         If you override this method, you should either call super to propagate the change to children or manually forward the change to children.    */@available(iOS 8.0, *)func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator)
View的旋转适配
open func layoutSubviews() {    if UIApplication.shared.statusBarOrientation == UIInterfaceOrientation.landscapeLeft {        旋转判断    }}
名称解释1. UIDeviceOrientation 手机硬件的方向2. UlInterfaceOrientation 手机页面的方向3. UlInterfaceOrientationMask 手机页面支持的方向集合4.UIDevice.current.orientation获取手机硬件方向属性参考文章:https://www.jianshu.com/p/a354ca1890dehttps://www.likecs.com/show-307967522.html

标签:

相关推荐

【大国基理】广西北海:用“一啖茶”的功夫化解纠纷-热闻

2023年中国网络媒体论坛“中国叙事•构建国际传播新范式”平行论坛在南京举行

2022 年最好的肉类温度计_环球微头条

世界速递!动辄言功的辄的意思 动辄言功

华尔街过了这一关,美联储却栽了个跟头!

【期货日历】2023年4月24日-2023年4月30日重要期货数据和事件预告 环球热闻

全球信息:铁矿期货报告04.21:终端需求羸弱,铁矿盘面持续回落

一周新闻小测:看看这周发生了哪些大事(4月21日当周)

《封面直播》丨孟晓苏:现在的房地产是“一手掐脖子一手又在做人工呼吸”_天天头条

韩国房价暴跌,穷人更遭殃了_天天要闻

“史上最挤”五一档近20部影片定档,预售已破6500万元|热门

比烧烤更热的是淄博楼市:成交量暴涨7成,中介称咨询量增5倍

储能15%/2h!甘肃定西通渭风电基地200MW风电项目竞配结果公示!

不抱怨的世界读后感1000字_不抱怨的世界读后感

环球微资讯!关于夏天的诗词_关于夏天的诗

埃德米尔森补时救主,武汉三镇队取得新赛季第一分 环球热门

钱报健康小站丨错把精华液当眼药水,大伯差点失明,这事千万注意

父亲送中毒女儿就医怕遇堵车报警求助 交警开道护送

讲好中国故事,构建国际传播新范式

帮聋哑修脚爸爸当“翻译”的小女孩火了,她有一个愿望……

即时:【大宏图·“县”在启航】广西荔浦:拉长链条赋能“金芋飘香” 集群聚势叫响“衣...

环球头条:执法记录仪突然天旋地转,记录下生死瞬间!

北京龙泉杏香农业科技发展中心会计李玉荣接受审查调查 全球百事通

北京北传科技发展有限公司原党总支书记、总经理张顺增被查-环球微资讯

世卫组织:苏丹武装冲突已致至少413人死亡 环球观天下

天天快播:国图公布劳动节开馆安排

2023年中国航天大会将在合肥开幕

山西着力打造中国乡村民宿业发展的特色模式

精致悦野设计、全场景智控四驱,轻越野新物种奇瑞TJ-1上海车展大放异彩

马斯克又出惊人言论:美国违约只是时间问题!

要变天!内蒙古迎来大范围雨雪天气,呼和浩特的天气是→_每日观察

沪港通交易日历优化4月24日上线实施 有力提升互联互通跨境投资效率

马云获聘为香港大学教授 环球实时

重大违法强制退市!*ST紫晶和*ST泽达成科创板首批退市公司

速读:靠一座矿山“画饼”的汉隆集团四闯港股,三年收入百万累计亏损千万

成都楼市“打新”中签率低至0.47%,房价涨幅继续领跑全国|实时

黄河流经哪几个省份?长江黄河的源头和终点是什么?

华联控股:股东大会较以往提前主要是因为今年年报披露工作较往年提前了

白肉指的是什么啊?为什么运动员不吃红肉?

世界聚焦:汇聚A股ESG龙头,ESG300ETF今日上市

环球新资讯:江苏:今年3月全省查处违反中央八项规定精神问题461起

星空有约丨科普专家解析行星合月

环球热消息:美媒再曝“泄密门”内容:因乌军可能被包围,美曾建议放弃巴赫穆特

市场监管总局:我国法人和其他组织数量约1.7亿个

民航总医院:五一假期门急诊安排公布,5月1日上午半日门诊

市场监管总局进一步规范餐饮服务提供者食品添加剂管理 全球资讯

美媒:许多美国人认为经济衰退已来临 正艰难应对财务痛苦_世界时快讯

中央决定:王廷科任中国人民保险集团党委书记

中国一季度银行结售汇逆差153亿美元,跨境资金流动总体稳定 看热讯

环球视讯!香港科技大学(广州)与中国电信广东公司签署战略合作协议

傣族在哪个地区 傣族在哪个地区最多 环球观焦点

环球视讯!2022年上海知识产权保护十大典型案例公布,“十万个为什么”“任天堂”等侵权案上榜

液体面包到底是什么啊?牛奶被称为液体面包吗?

洛克王国火灵石在哪里获得 火灵石分布地点位置汇总[多图]-全球速看料

全球快播:丽江股份: 2023年一季度报告

速递!Consul 的架构和设计思路

网签692套 4月20日佛山楼市成交早报_全球聚焦

关东是在哪里啊?走西口和闯关东的区别是什么?

序齿排班怎么解释出自哪里?请勿自误的意思是什么?

技术刘报告:黄金首要支撑看向这一位置 美指受阻回落 天天热闻

【环球播资讯】多伦多机场发生“黄金大劫案”!集装箱不翼而飞,物品价值上1亿元

当前时讯:重拳出击欺诈发行、财务造假,多家公司拉响“违法退”警报

天天时讯:国家医保局:严厉打击欺诈骗保 深化药品和医用耗材集中带量采购改革

A股大跌,原因找到了!_热闻

南钢收购案陷僵局 各方分歧严重或致诉讼

80岁叫耄耋90岁叫什么?1到100岁的古代称呼是什么?

手写体验出色,用科大讯飞智能办公本书写非常流畅

医保异地直接结算!北京大兴首批共有25家名单公布

辽宁舰赴西太平洋开展实战化演练_速读

民政部释疑:社会团体法规制度中不存在“一级学会”这一名称 环球今热点

美日韩搞“三眼联盟”?

基辅夜空突现强光,NASA否认关联其卫星坠落

4·22世界地球日|生态文明看山西

环球时讯:【地评线】黄河网评:让更多的“科技小院”在三晋大地涌现

【地评线】黄河网评:推动消费提档升级,助力中国经济稳健前行

世界新消息丨一批“复制粘贴”的运粮车,引起专案组的注意……

秦刚将访问菲律宾 环球热资讯

美财长声称中方对政治解决乌克兰危机所提方案“不太认真”,中方回应

拜登将签令限制美企对华关键经济领域投资?外交部:坚决反对

星火成炬 | 妙“手”在民间_全球快播

年内20地更新上市企业名册 近百家公司募资逾千亿元

共促对外劳务健康发展

世界今头条!猕猴桃适合什么季节吃 猕猴桃哪个季节吃比较好呢

西果园镇:党支部领办合作社激活乡村振兴“一池春水”

税费轻松办!合浦智慧办税“加速度”

每日播报!努尔基奇谈追梦:被罚下场已经太过了,还被禁赛,这不对

挂单报告:黄金留意三大支撑 欧美警惕这一空单埋伏

钱对他而言只是数字......马斯克一夜间身价蒸发126亿美元,依旧欣喜发推:从许多意义上来...

世界热资讯!28家、200亿,券商数字化超车竞赛

今日快讯:美国第一季度“堕落天使”规模占去年全年60%,或创规模纪录

武乡县气象台发布寒潮黄色预警【Ⅲ级/较重】

热点评!北京危旧楼房改建政策出台 可适当增加厨房、卫生间面积

校园里“暗藏玄机”,北京首所碳中和试点校启动建设

员工用指纹膜帮同事打卡被开除 法院这样判 环球热文

当前报道:万吨大驱咸阳舰解缆起航,看三舰帅气同框!

明天上午,北京牛街临时交通管制!

热点!纽约男子疯狂驾车闯入餐厅躲避警方追查 曾24次被捕

阿根廷央行再次加息300个基点 当前热讯

俄外长:俄想方设法向世界市场供应粮食_世界热点

前沿资讯!一季度山西省地区生产总值5824.33亿元 增长5.0%