swift 屏幕的翻转 + 状态栏(statusBar)的隐藏
1.状态栏的隐藏
这个问题是基于 UIApplication.shared.isStatusBarHidden = true; 调用居然是无效的……
现在写下自己的代码,用来备忘吧……
1.首先需要复写一个 hidden 的这个属性 ,然后调用 setNeedsStatusBarAppearanceUpdate() 方法,
这样使用又觉得麻烦,所以 又多设置了一个变量 ,让使用更简单
- override var prefersStatusBarHidden: Bool {
- return self.isStatusBarHidden
- }
- var isStatusBarHidden = false {
- didSet{
- self.setNeedsStatusBarAppearanceUpdate()
- }
- }
在使用的地方调用
- self.isStatusBarHidden = true
- // self.isStatusBarHidden = false;
2.屏幕的翻转:
首先写下试用与 iphone 和 ipad 的
我使用的是transfrone 旋转 视图view ,这样的前提是 这个view 是present 出来的,不能用 navigationController 了
- //定义枚举
- enum ScreenOrientation :Int {
- case portrait = ;
- case landscape =
- }
- // 定义常量
- let scrw = UIScreen.main.bounds.size.width;
- let scrh = UIScreen.main.bounds.size.height;
- //定义方法
- func tranformView() -> Void {
- if self.orientation == .landscape {
- self.orientation = .portrait
- }else{
- self.orientation = .landscape;
- }
- if self.orientation == .landscape {
- self.isStatusBarHidden = true
- UIView.animate(withDuration: deviceChangeOrientationTimeIntravel, animations: {
- self.view.transform = CGAffineTransform.init(rotationAngle: CGFloat(Double.pi / ))
- self.view.bounds = CGRect(x:,y:,width:scrh,height:scrw);
- self.viewWillLayoutSubviews();
- self.view.layoutIfNeeded();
- }) { (isFinish) in
- }
- }else{
- self.isStatusBarHidden = false;
- UIView.animate(withDuration: deviceChangeOrientationTimeIntravel, animations: {
- self.view.transform = CGAffineTransform.init(rotationAngle: CGFloat())
- self.view.bounds = CGRect(x:,y:,width:scrw,height:scrh);
- self.viewWillLayoutSubviews();
- self.view.layoutIfNeeded();
- }) { (isFinish) in
- }
- }
- }
简单易懂,应该是可以使用了……
网上也找了 这个方法,但是使用的时候,只有在iphone 上用,ipad 使用无效
- /*
创建个 extension- 使用这个 扩展 要在 appdelegate 文件中 添加代码:
- var blockRotation: Bool = false
- */
extension AppDelegate{- func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
- if self.blockRotation == true{
- return UIInterfaceOrientationMask.all;
- }else{
- return UIInterfaceOrientationMask.portrait;
- }
- }
}
调用的时候
- let appDelegate = UIApplication.shared.delegate as! AppDelegate
//横屏- @objc func hengp()->Void{
- appDelegate.blockRotation = true
- let value = UIInterfaceOrientation.landscapeLeft.rawValue
- UIDevice.current.setValue(value, forKey: "orientation");
- }
- //竖屏
- @objc func shup() -> Void{
- appDelegate.blockRotation = false
- let value = UIInterfaceOrientation.portrait.rawValue
- UIDevice.current.setValue(value, forKey: "orientation")
- }
- //切换横竖屏 执行的代理方法
- override func willRotate(to toInterfaceOrientation: UIInterfaceOrientation, duration: TimeInterval) {
- print("方向即将改变 \(toInterfaceOrientation)");
- }
- override func didRotate(from fromInterfaceOrientation: UIInterfaceOrientation) {
- print("方向改变完成 ");
/* 在这里更新 约束 和 frame */- UIView.animate(withDuration: deviceChangeOrientationTimeIntravel, animations: {
- self.viewWillLayoutSubviews();
- self.view.layoutIfNeeded();
- }) { (isFinish) in
- if isFinish == true{
- }
- }
- }
swift 屏幕的翻转 + 状态栏(statusBar)的隐藏的更多相关文章
- [Swift]动态变化顶部状态栏(statusBar)的颜色
顶部状态栏(statusBar)的两种样式: (1).default 样式:黑色. (2).light 样式:白色 一.无导航栏情况 如果没有使用导航控制器 UINavigationControlle ...
- 张高兴的 UWP 开发笔记:手机状态栏 StatusBar
UWP 有关应用标题栏 TitleBar 的文章比较多,但介绍 StatusBar 的却没几篇,在这里随便写写.状态栏 StatusBar 用法比较简单,花点心思稍微设计一下,对应用会是个很好的点缀. ...
- Android动态控制状态栏显示和隐藏
记得之前有朋友在留言里让我写一篇关于沉浸式状态栏的文章,正巧我确实有这个打算,那么本篇就给大家带来一次沉浸式状态栏的微技巧讲解. 其实说到沉浸式状态栏这个名字我也是感到很无奈,真不知道这种叫法是谁先发 ...
- [置顶] IOS7状态栏StatusBar官方标准适配方法
IOS7状态栏StatusBar官方标准适配方法 hello,大家好,ios7正式版已经发布,相信大家都在以各种方式来适配ios7. 如果你已经下载了xcode5,正准备使用,你会发现各种布局的改变. ...
- Android利用反射获取状态栏(StatusBar)高度
MainActivity如下: package cc.teststatusbarheight; import java.lang.reflect.Field; import android.os.Bu ...
- 牛B的swift屏幕旋转经验终结者(OC统一思路)
牛B的swift屏幕旋转经验终结者(OC统一思路) 1.AppDelegate (1)定义变量 var blockRotation: Bool = false (2)定义方法 Swift代码 func ...
- IOS7状态栏StatusBar官方标准适配方法
IOS7状态栏StatusBar官方标准适配方法 hello,大家好,ios7正式版已经发布,相信大家都在以各种方式来适配ios7. 如果你已经下载了xcode5,正准备使用,你会发现各种布局的改变. ...
- swift 如何控制view的显示与隐藏
swift 如何控制view的显示与隐藏 UIView有一个属性 hidden let line: UILabel = UILabel() 默认是显示的 需要显示它的时候:line.hidden = ...
- iOS7隐藏状态栏 statusBar
转:http://blog.csdn.net/dqjyong/article/details/17896145 评:通过这点变化,可以看出苹果倾向于使用delegate取代全局变量. IOS7中,不仅 ...
随机推荐
- Jfinal undertow本地运行加载静态文件
undertow部署文档中可配置静态资源也可以添加磁盘目录作为项目中得静态文件访问 undertow.resourcePath = src/main/webapp, D:/static 这样配置就可以 ...
- 简述 CGI、FastCGI和php-FPM的区别
1.CGI是联系webserver 跟php解析器的一个桥梁 2.FastCGI是CGI改良的版本 3.php-FPM 是FastCGI 的进程管理器
- 题解[51nod1555] 布丁怪
题解[51nod1555] 布丁怪 题面 解析 本文参考这位dalao的题解 首先有一个巧妙的转换, 开一个数组记录每个横坐标的纵坐标, 简单来说就是对于点(x,y),令a[x]=y. 于是问题就变成 ...
- vue computed、filters 用法笔记
computed 在使用时的效果是属性,不是函数. 其次,computed 的值是“智能”响应的,依赖必须都是这个实例自己的东西,如果某个计算需要依赖传入的值,则推荐使用 methods. filte ...
- java 数组对象的应用
public class Student 2 { 3 // 成员变量 4 private String name; 5 private int age; 6 7 // 构造方法 8 public St ...
- 004_simulink建立子系统
1. 按照<001_创建simulink>文件内容修改 2. 在选中的位置右键,选择create subsystem selection 3. 得到如图所示 4. 双击subsystem进 ...
- QShareMemory
Qt提供了一种安全的共享内存的实现QSharedMemory,以便在多线程和多进程编程中安全的使用.比如说QQ的聊天的客户端,这里有个个性头象,当点击QQ音乐播放器的时候,启动QQ音乐播放器(启动一Q ...
- Gym 102346A Artwork dfs
Artwork Gym - 102346A 题意:给n*m的地图,入口是(0,0),出口是(n,m),其中有k个监视器,坐标是(xi,yi),监视半径是r,问一个人能不能不被监视到,从起点到终点. 如 ...
- linux 搭建elk6.8.0集群并破解安装x-pack
一.环境信息以及安装前准备 1.组件介绍 *Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停 ...
- Ansible 模式
一.Ansible 命令 1.Ansible 命令执行的方式有两种:Ad-Hoc.Ansible-playbooks,这两种方式没有本质的区别,Ad-Hoc用于临时执行命令:Ansible-playb ...