关于swift3.0中基于viewConroller更改当前UIStausBarStyle

使用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的样式会切换...对就是淘宝那个骚东西。

补充:

上述场景也可以用第二种方式修改,关键代码 setNeedsStatusBarAppearanceUpdate ,请自行研究。


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}}

其他两个属性要也是一样的,就这么简单。

收工。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值