iOS屏幕横竖屏切换

胡东东博客 • 2020 年 10 月 25 日

搜了网上的教程是真的乱,废话不多说,这里从启动到具体的VC,横竖屏切换完美搞定。

如果你的app只需要支持一个方向,那么不需要看以下内容,只需要将项目的General设置中,将Device Orientation勾选需要支持的方向即可

一、启动页LaunchScreen

启动页是系统的默认根据info.plist的设置显示,启动时就加载了,加载时机很早,所以你要决定启动页要不要根据手机横竖屏自动旋转,还是保持固定的方向。

1.1、启动页需要根据手机横竖屏自动旋转

如果启动页需要根据手机横竖屏自动旋转,只需要在项目的General设置中,将Device Orientation勾选需要支持的方向即可。这样在横屏或者竖屏启动时会默认加载指定的方向

1.2、启动页固定方向,后续VC支持旋转

正如上面说的启动页加载很早,所以需要在info.plist固定方向,在Appdelegate里面设置VC支持的旋转方向,例如启动页固定竖屏,VC支持横竖屏在项目的General设置中,将Device Orientation只勾选Portrait

在Appdelegate中动态设置支持的旋转方向func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {

return .all

}

二、控制器VC的旋转设置

控制器VC的旋转会根据顶部的VC设置,所以看你是否用了导航控制器navigationController和tabbarController,如果是嵌套使用,除了设置指定的VC控制器,还需要设置navigationController和tabbarController的属性,可以自定义这两个子类。

2.1、tabbarController的子类实现override var shouldAutorotate: Bool {

return self.selectedViewController?.shouldAutorotate ?? false

}

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {

return self.selectedViewController?.supportedInterfaceOrientations ?? .portrait

}

override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {

return self.selectedViewController?.preferredInterfaceOrientationForPresentation ?? .portrait

}

2.2、navigationController的子类实现override var shouldAutorotate: Bool {

return self.topViewController?.shouldAutorotate ?? false

}

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {

return self.topViewController?.supportedInterfaceOrientations ?? .portrait

}

override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {

return self.topViewController?.preferredInterfaceOrientationForPresentation ?? .portrait

}

2.3、指定VC的实现//是否需要自动旋转

override var shouldAutorotate: Bool {

return false

}

//支持的旋转方向

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {

return .portrait

}

//跳转的优先方向

override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {

return .portrait

}

三、跳转

跳转记得用present的跳转方式self.present(VC, animated: true) {

}版权属于:胡东东博客

自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!

☟☟如文章有用,可点击一次下方广告支持一下☟☟

ios 旋转屏幕试图切换_iOS屏幕横竖屏切换相关推荐

  1. 三星手机拍照旋转问题 调用相机拍照出现横竖屏切换?

    三星手机拍照旋转问题 调用相机 拍照出现横竖屏切换? 拍照获取图片时,当应用是竖屏时,在部分手机上,如:三星note3上,图片不能正常显示,会旋转90°. =_= 大概的思路就是拍照后获取图片旋转的角 ...

  2. android横竖屏切换函数,Android横竖屏切换小结.PDF

    Android横竖屏切换小结 Android横竖屏切换小结 Android手机或平板都会存在横竖屏切换的功能,通常是由物理重力感应触发的,但是 有时候也不尽然,通常在设置里面我们可以对手机的横竖屏切换 ...

  3. android中的横竖屏切换,Android中横竖屏切换时Activity的生命周期

    Android中横竖屏切换时Activity的生命周期执行情况 1.默认情况下生命周期 (1)第一次进入界面 11-17 13:55:18.452: E/ImageListActivity(10586 ...

  4. android 横竖切换快捷键,Android横竖屏切换总结

    Android横竖屏要解决的问题应该就两个: 一.布局问题 二.重新载入问题 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你所指定 ...

  5. 手机横竖屏相关设置:动态 关闭横竖屏切换、指定横竖屏切换

    方式一:通过重力感应开关来关闭/开启横竖屏切换 关闭横竖屏切换:Settings.System.putInt(context.getContentResolver(), Settings.System ...

  6. android横竖屏切换方法,Android横竖屏切换的生命周期

    关于Android手机横竖屏切换时Activity的生命周期问题,网上有很多相似的文章,大多数都是说明在竖屏切换横屏时Activity会重启一次,而在横屏切换竖屏时Activity会重启两次. 我本身 ...

  7. android 重力感应 横竖屏切换,重力感应 横竖屏切换

    1,去掉StatusBar 在info.plist添加UIStatusBarHidden设置Boolean,设置为YES. 2,横屏 继续在info.list中添加UIInterfaceOrienta ...

  8. webview 禁用横竖屏切换_Android 禁止横竖屏切换

    MainActivity里面的代码: public void onConfigurationChanged(Configuration newConfig) { try { super.onConfi ...

  9. 【小技巧】Android SDK模拟器 增加手机内存RAM和ROM 横竖屏切换 AVD安装路

    http://apps.hi.baidu.com/share/detail/34577170 新版的SDK越来越方便使用,摆脱了命令行的输入,不过命令有时解决大问题 问题一 手机内存大小扩展 RAM手 ...

最新文章

  1. 5中div标签有没有url属性_[网页编程]-03 CSS 常用属性
  2. Oracle 11g必须开启的服务及服务详细介绍
  3. python 批量改名
  4. 学习org-mode
  5. 为什么使用mq?具体的使用场景是什么?
  6. LeetCode 69 X的平方根
  7. unity 删除服务器项目,在吗?有个支持批量构建项目的好东西推荐给你
  8. 成为优秀的Java程序员要具备哪些技能?
  9. Hive 之 导入导出数据
  10. Mac使用终端压缩加密文件
  11. MYSQL 调优和使用必读
  12. hibernate理解
  13. Oracle监听注册和sqlnet,Oracle监听配置(四)--如何实现静态、动态注册
  14. 美国52.2%网民每月至少登录一次Facebook
  15. pro-engineerUG
  16. 家庭智能网络防盗及远程实时监控系统
  17. 产业分析:视频云服务行业
  18. sqlserver数据库的使用
  19. 世界黄金价格走势,十大香港国际黄金交易平台排行榜
  20. 修改服务器上tomcat的默认端口号

热门文章

  1. [No000061]别人凭什么要帮你?理解中国人的人际和谐外人、自己人与另一半...
  2. Putty远程(SSH)连接VPS
  3. Jackson公司蛋白质电印迹方法确认蛋白质转移
  4. PDV,PVV,IPG
  5. HTML下拉列表选择方法
  6. html放射性背景怎么做,5分钟用Ai做放射性背景
  7. matlab列向量创建,matlab创建列向量
  8. 原型工具摹客-轮播图制作
  9. 从零开始学_JavaScript_系列(九)——dojo(2)(AJAX、时间控件、鼠标事件、样式修改、事件移除、消息发布订阅)
  10. 39、count_rpkm_fpkm_TPM