【Swift5.1】屏幕旋转+ 状态栏的隐藏
- 之前一直想研究一下屏幕的旋转问题,看到网上的例子太多不太统一,所以今天研究了一下话不多说直接上代码
- 首先设置一下AppDelegate
class AppDelegate: UIResponder, UIApplicationDelegate {var blockRotation : UIInterfaceOrientationMask = .portrait{didSet{if blockRotation.contains(.portrait){//强制设置成竖屏UIDevice.current.setValue(UIInterfaceOrientation.portrait.rawValue, forKey: "orientation")}else{//强制设置成横屏UIDevice.current.setValue(UIInterfaceOrientation.landscapeLeft.rawValue, forKey: "orientation")}}}func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {return true}func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {print("AppDelegate ---supportedInterfaceOrientationsFor")return blockRotation}
}
- 然后在自己需要旋转的ViewController中做如下操作,我这个例子是点击的按钮的时候才旋转
import UIKitclass InterFaceOrientationViewController: UIViewController {override func viewWillAppear(_ animated: Bool) {super.viewWillAppear(animated)// 这里是一开始到这个界面就开始旋转屏幕
// let kAppdelegate : AppDelegate? = UIApplication.shared.delegate as? AppDelegate
// kAppdelegate?.blockRotation = UIInterfaceOrientationMask.landscapeRight}override func viewDidLoad() {super.viewDidLoad()self.view.backgroundColor = UIColor.whiteself.title = "详情"let btn = UIButton(type: .custom)btn.backgroundColor = UIColor.redbtn.setTitle("旋转屏幕", for: .normal)btn.setTitleColor(UIColor.black, for: .normal)btn.addTarget(self, action: #selector(actionBtn(sender:)), for: .touchUpInside)self.view.addSubview(btn)btn.snp.makeConstraints { make inmake.center.equalTo(self.view.snp.center)}}@objc func actionBtn(sender:UIButton){sender.isSelected = !sender.isSelectedlet kAppdelegate : AppDelegate? = UIApplication.shared.delegate as? AppDelegateif(sender.isSelected){kAppdelegate?.blockRotation = UIInterfaceOrientationMask.landscapeRight}else{kAppdelegate?.blockRotation = .portrait}}override var prefersStatusBarHidden: Bool {return false}override var preferredStatusBarStyle: UIStatusBarStyle{return UIStatusBarStyle.lightContent}override func viewWillDisappear(_ animated: Bool) {super.viewWillDisappear(animated)let kAppdelegate : AppDelegate? = UIApplication.shared.delegate as? AppDelegatekAppdelegate?.blockRotation = UIInterfaceOrientationMask.portrait}override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {super.viewWillTransition(to: size, with: coordinator)print("屏幕旋转")}/*// MARK: - Navigation// In a storyboard-based application, you will often want to do a little preparation before navigationoverride func prepare(for segue: UIStoryboardSegue, sender: Any?) {// Get the new view controller using segue.destination.// Pass the selected object to the new view controller.}*/}
- 到这屏幕旋转的例子就结束了
- 下面讲一下状态栏的显示与隐藏和状态栏的style修改
- 在网上找的例子都是在 需要隐藏和修改style的ViewController 重写这两个方法:
override var prefersStatusBarHidden: Bool {return false}override var preferredStatusBarStyle: UIStatusBarStyle{return UIStatusBarStyle.lightContent}
- 但是在实际的开发过程中,很少应用单个的ViewController作为开发,大多数都是使用UINavigationController + UIViewController 这种模式开发,所以光在ViewController 中重写上面的两个方法是不够的,需要自定义一个 UINavigationController 在其内部重写这两个方法:
class MainNavigationViewController: UINavigationController {override func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view.}override var prefersStatusBarHidden: Bool{return self.topViewController?.prefersStatusBarHidden ?? false}override var preferredStatusBarStyle: UIStatusBarStyle{return self.topViewController?.preferredStatusBarStyle ?? UIStatusBarStyle.default}}
- 然后加上上述中ViewController中的两个方法就能实现状态栏的显示与隐藏和style的变化
【Swift5.1】屏幕旋转+ 状态栏的隐藏相关推荐
- html 屏幕旋转,屏幕旋转与Transform
iTouch,iPhone,iPad设置都是支持旋转的,如果我们的程序能够根据不同的方向做出不同的布局,体验会更好. 如何设置程序支持旋转呢,通常我们会在程序的info.plist中进行设置Suppo ...
- iOS开发中屏幕旋转(一)
Morris_ 2018.11.24 前言 最近做一个关于在线视频互动的iPad项目,部分界面只要横屏,部分界面可以横竖屏转换.看了看别家做的项目,有些是只做竖/横屏,有些是支持了横竖屏转换,在iPa ...
- IOS:屏幕旋转与Transform
iTouch,iPhone,iPad设置都是支持旋转的,如果我们的程序能够根据不同的方向做出不同的布局,体验会更好. 如何设置程序支持旋转呢,通常我们会在程序的info.plist中进行设置Suppo ...
- iOS 动态控制屏幕旋转
本文讲述动态控制自动旋转方向(1到3),手动旋转屏幕方向(第4),以及通过旋转vc的view假旋转屏幕方向. 1.配置vc可以旋转 在需要配置方向的vc中 覆盖这个函数 - (BOOL)shouldA ...
- Android全屏显示和屏幕旋转的处理
全屏显示 全屏隐藏状态栏 Window window = getWindow(); int flag = WindowManager.LayoutParams.FLAG_FULLSCREEN; req ...
- android 系统状态栏的隐藏和显示
今天,简单讲讲android如何控制 系统状态栏的隐藏和显示. 昨天遇到这个问题,找了好久资料才解决,这里记录一下. 网上流传着很多种做法.比如: 1.在AndroidManifest.xml文 ...
- iOS屏幕旋转技术点及解决方案总结
1.屏幕旋转相关枚举 关于屏幕旋转枚举一共有3种: UIInterfaceOrientation, UIInterfaceOrientationMask, UIDeviceOrientati ...
- Android屏幕旋转,赶紧学习一下
ActivityInfo.SCREEN_ORIENTATION_SENSOR //根据传感器设置方向 ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR //根据传 ...
- iPhone屏幕旋转机制详解
主要说一下本人对iOS6.0及以前版本中对屏幕旋转的操作:包括重力感应旋转和强制旋转. 首先说一下重力感应引起的屏幕旋转. 在iOS6.0以前,只需要UIViewController的子类重载 - ( ...
最新文章
- 盖茨、奥巴马、马斯克账号被黑,推特遭大规模黑客攻击
- python接口自动化参数化_Python读取txt文件数据的方法(用于接口自动化参数化数据)...
- html5页面常用的代码,最全的 HTML5 知识汇总
- jdialog模态化
- 值类型与引用类型数据运算
- Kaggle 商品销量预测季军方案出炉,应对时间序列问题有何妙招
- 面试准备——springboot相关
- __VA_ARGS__和##__VA_ARGS__的区别(转载)
- 阶段3 2.Spring_06.Spring的新注解_6 Qualifier注解的另一种用法
- 群晖服务器怎么做文件转移,群晖(黑) 篇五:群晖系统迁移:旧群晖数据和系统转移到新机器...
- 一篇比较好的高数的学习规划分享
- Python之文本去重(基础版)
- php无限分类算法,php递归算法 php递归函数无限级分类
- PHP基础教程(一)PHP快速入门
- 数据分析相关职位分析与可视化
- 体验服官网和平精英维护服务器,和平精英体验服怎么注册?和平精英体验服注册流程...
- 微信怎么收银行卡的消息服务器,微信零钱提现,这样操作,可以免去手续费
- FLEXPART安装笔记,ubantu,grib_api,eccodes,NetCDF
- 【媒体管家】媒体邀约以及媒介投放策略
- Python从入门到实践第9章课后作业