博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS之隐藏状态栏
阅读量:7184 次
发布时间:2019-06-29

本文共 1728 字,大约阅读时间需要 5 分钟。

hot3.png

IOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIVIEWCONTROLLER的状态栏与导航栏基本是一体的。因此UIVIEWCONTROLLER的HIDE/SHOW状态的方法也跟其他版本的不一样了。 在IOS7以前的版本,HIDE/SHOW是通过以下代码实现[[UIApplication sharedApplication] setStatusBarHidden:YES(NO) withAnimation:UIStatusBarAnimationSlide];  在 iOS7中默认情况下,这个方法不成功了。到setStatusBarHidden:withAnimation:声明的头文件去看看,多了一句注释: // Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system. 现在在iOS7中,status bar的外观默认依赖UIViewController, 也就是说status bar随UIViewController的不同而不同。在这种默认的方式下,用全局的方法 setStatusBarHidden:withAnimation:是行不通的。google一下发现现在的解决方法有两种:如果只是单纯的隐藏状态栏,那么是在默认情况下,只需要重新实现两个新方法- (UIStatusBarStyle)preferredStatusBarStyle  {      return UIStatusBarStyleLightContent;      //UIStatusBarStyleDefault = 0 黑色文字,浅色背景时使用    //UIStatusBarStyleLightContent = 1 白色文字,深色背景时使用  }    - (BOOL)prefersStatusBarHidden  {      return NO; //返回NO表示要显示,返回YES将hiden  }  上面一个回调方法返回status bar显示时候的样式,下面一个回调控制是否显示status bar.调用下面的一行代码将会触发上面的回调[self setNeedsStatusBarAppearanceUpdate];  如果想在hiden/show之间有点动画效果,用下面的代码即可:[UIView animateWithDuration:0.5 animations:^{          [self setNeedsStatusBarAppearanceUpdate];      }];  或者调用下面的代码:[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];  在设置好这些,我们还是会发现一些问题,就是状态栏虽然没有了,但取而代之的是黑色的一片区域,所以我们还需要调整UIViewController的视图,具体代码为:[cpp] view plain copy -(void)viewDidLayoutSubviews  {      CGRect viewBounds = self.view.bounds;      CGFloat topBarOffset = 20.0;      viewBounds.origin.y = -topBarOffset;      self.view.bounds = viewBounds;      [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//for status bar style  }  

转载于:https://my.oschina.net/mexiaobai1315/blog/812259

你可能感兴趣的文章
yum更换国内源 yum下载rpm包 源码包安装
查看>>
i++为什么是线程不安全的
查看>>
C# log4net 不输出日志
查看>>
最好的年龄减肥
查看>>
2015第43周一solr相关概念
查看>>
大数模板
查看>>
SqlServer时间戳与普通格式的转换
查看>>
转:关于腾讯bugly崩溃的android so符号表使用
查看>>
集成支付宝后出现LaunchServices: ERROR: There is no registered handler for URL scheme alipay
查看>>
Http和Socket详解
查看>>
iOS 多线程开发之OperationQueue(二)NSOperation VS GCD
查看>>
LeetCode - Trapping Rain Water
查看>>
Codeforces 437C The Child and Toy(贪心)
查看>>
蓝桥杯 大臣的旅费
查看>>
hql中不能写count(1)能够写count(a.id)
查看>>
Atitit。Time base gc 垃圾 资源 收集的原理与设计
查看>>
还是态度问题
查看>>
判断记录是否存在的通用方法
查看>>
sift算法c语言实现
查看>>
报表中的Excel操作之Aspose.Cells(Excel模板)
查看>>