iOS6和iOS7代码的适配(2)——status bar

转自:http://blog.csdn.net/sakulafly/article/details/17841239


用Xcode5运行一下应用,第一个看到的就是status bar的变化。在iOS6中,status bar是系统在处理,应用中不需要考虑这部分,iOS7之后是应用在处理,每个ViewController都可以控制status bar。

      iOS7里面的status bar是透明的,会把下面的内容一起显示出来,比如我的应用色调是深色调,希望status bar上的图标是浅色的。那么我需要做两步:

      1. 在info.plist中设置View controller-based status bar appearance为NO

      2. 在AppDelegate.m文件中,didFinishLaunchingWithOptions方法里面增加

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];  
  2. [[UIApplication sharedApplication] setStatusBarHidden:NO];  

   这样,应用中status bar就统一改成了浅色的风格。


   如果你的应用有些viewController中status bar需要特殊设置,那么就需要在相应的viewController中处理,这就需要重写两个API,preferredStatusBarStyle和prefersStatusBarHidden。

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. -(UIStatusBarStyle)preferredStatusBarStyle  
  2. {  
  3.     return UIStatusBarStyleLightContent;  
  4. }  

[objc]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. - (BOOL)prefersStatusBarHidden  
  2. {  
  3.     return YES;  
  4. }  
然后在需要刷新状态栏样式的时候,调用[self setNeedsStatusBarAppearanceUpdate]方法实现刷新。

      从iOS7来说,status bar是浮动在上层的,这样如果window本身下移20个pixel,那么也可以完美的显示。这个方法在理论上应该成立,我努力尝试过,但没有成功,如果有成功的大大请告诉我应该怎么做。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值