关于swift3.0中基于viewConroller修改当前UIStausBarStyle
来源:互联网 发布:ip地址和端口的关系 编辑:程序博客网 时间:2024/06/04 00:24
使用swift3.0写项目且又没熟读官方API文档的小朋友,在基于控制器更改statusBar样式时估计会遇到那么点麻烦,因为现在网上貌似还没有这个资料,好像是3.0的新特性。其实swift的注释文档里早就写好了解决方法,可见阅读官方文档是个好习惯。
既然找到了,就记一下同时方便下大家。
想看解决办法的可以直接跳到最后。
关于UIStausBarStyle修改的方法,我们知道的有两种:
1.基于application层次的修改
分两个步骤:
一、设置info.plist文件
View controller-based status bar appearance 这个key的意思是基于控制字显示statusBa的样式,YES的意思是基于控制器,NO则反之。
二、写代码
OC:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
swift:
UIApplication.shared.setStatusBarStyle(.lightContent, animated: true)
这个改法改起来大刀阔斧,但在某些场合还是要这么用的,比如你的app里有个商品详情界面,滑动的时候statusBar的样式会切换...对就是淘宝那个骚东西。
2.基于viewController的修改
同样也是两个步骤,且第一步和前者一样,只不过value选NO.关键在第二个步骤上。
二、写代码
以往的资料都说重写一个preferStatusBarStyle方法,返回值里返回要修改的样式,系统会自动调用。像酱:
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
OC是没问题。
swift3.0之前貌似也可以。
但如果你用3.0你就会发现不能override这个方法,敲不出来,强行写也会有个does not override any method from its superClass.
网上搜吧,没有,还是重写那一套。
怎么办呢。
3.swift3.0的新改法
UIViewController里居然不提供这个方法接口,那就跳进去找一找。
command f 一下 “statusBarStyle”。来到一片神奇的地方,带statusBar的东东都在这里,我想这就是我想要的滑板鞋..咳。是一些open修饰的属性:
open var preferredStatusBarStyle: UIStatusBarStyle { get } open var prefersStatusBarHidden: Bool { get } open var preferredStatusBarUpdateAnimation: UIStatusBarAnimation { get }
就说嘛,苹果的工程师们为你关了一扇门,自然会打开一扇窗的。
注释文档写的很清楚啦:
大意就是:这些方法确定了控制器被展示时的状态栏属性,在viewController的子类重写他们以返回想要的statusBar属性。
那还等什么。
4 swift3.0中基于viewController修改当前UIStausBarStyle方法
控制器中重写preferredStatusBarStyle这个属性就行啦:
override var preferredStatusBarStyle: UIStatusBarStyle{get { return.lightContent}}
其他两个属性要也是一样的,就这么简单。
收工。
- 关于swift3.0中基于viewConroller修改当前UIStausBarStyle
- swift3.0 关于字符串
- swift3.0的一些修改
- Swift3.0中关于日期类的使用指引
- swift3.0中imageWithRenderingMode
- swift3.0 中... 和 ..<
- swift3.0 获取当前的Version
- 基于swift3.0的网络请求
- swift3.0 修改UISegmentedControl的字体大小
- swift3.0 中字符串截取
- swift3.0 中字符串截取
- swift3.0中FMDB使用
- 关于Swift3.0中的type(of:)函数
- swift3.0获取当前使用wifi SSID和SSID列表
- swift3.0通过响应链获取当前试图的控制器
- Swift3语法修改
- 基于友盟使用Swift3.0在Xcode8.0beta版中集成分享功能和第三方登录
- Swift3.0中代理的使用方法
- 寒假训练——HDU - 2532 Engine 模拟
- 开启新的篇章
- MySQL数据库设置远程访问权限方法小结 简单,粗暴,有截图
- MacOS下Rails+Nginx+SSL环境的搭建(上)
- NGINX轻松管理10万长连接 --- 基于2GB内存的CentOS 6.5 x86-64
- 关于swift3.0中基于viewConroller修改当前UIStausBarStyle
- Python学习笔记(综述)
- fpga项目整理
- jar包版本介绍(beta,alpha,release),软件的版本介绍
- 关于成为一名嵌入式程序员的日常总结(2)
- (二十一)剑指offer之数组中出现次数超过一半的数字
- Android BLE基础操作框架使用详解
- MacOS下Rails+Nginx+SSL环境的搭建(中)
- C# 冒泡排序法