关于IOS7上导航栏遮盖状态栏的问题,以及解决方案

最近为IOS7升级app,遇到了状态栏被导航栏遮住的问题,拿出来分享一下。 这里说的是UINavigationBar,自定义的不用看了


绝大多数情况下,只要用下面这句话就搞定了


self.navigationController.navigationBar.translucent = NO;


但这次遇到了奇怪的问题,起因是在iPad上用了split view,并且设置了UINavigationBar的background image,现象为状态栏一直是一片漆黑


经过多方排查和查找资料,发现这么一句。


  1. UINavigationController will alter the height of its UINavigationBar to either 44 points or 64 points, depending on a rather strange and undocumented set of constraints. If the UINavigationController detects that the top of its view’s frame is visually contiguous with its UIWindow’s top, then it draws its navigation bar with a height of 64 points. If its view’s top is not contiguous with the UIWindow’s top (even if off by only one point), then it draws its navigation bar in the “traditional” way with a height of 44 points.  This logic is performed by UINavigationController even if it is several children down inside the view controller hierarchy of your application. There is no way to prevent this behavior.


意思就是UINavigationBar的高度会自行调整为44或者64,没有确定的预测方法。 而之前作为UINavigationBar背景的图片是44高度的。最后换了张64高度,上面留了20px透明的图片搞定
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值