关于ios7 statusBar适配,在这里总结下吧(转自cocoaChina)

 
ios7中,由于status bar不再占用单独的20px,如果app需要同时支持ios7和ios6.1以下,那就需要适配下了。

首先看,用xcode5新建project后,运行ios7效果:

图1.

运行在ios6.1以下效果图:

图2


为了达到ios7与ios6.1以下的UI统一,苹果官方给出的建议是:
(附: https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/SupportingEarlieriOS.html
(以demo中tableView的设置为例:)

第一步:不要勾选xib中的Use Autolayout。

图3



第二步:选择View as “ios6.1 and Earlier”

图4



第三步:在Size Inspector中,有一ios6/7 Deltas:分别表示在PosX的增量、PosY的增量、宽度增量、高度增量。

在“ios6.1 and Earlier”模式下,由于status bar的高度为20,所以当app运行在ios7.0模式下时,需要view向下移动20像素,因此在ΔY上设置为20.
tableView坐标向下移动了20,由于整个屏幕的高度是不变的,所以在“ios7.0 and Later”模式下,需要将tableView的高度减去20像素,即在“ios6.1 and Earlier”模式下,设置tableView的ΔHeight为 -20。如果不设置ΔHeight,tableView底部会有20像素是不可见的,可以测试demo看看。
***注***:Δ,正数表示增,负数表示减。

图5



第四步:ok,设置完成,运行到ios7.0看下效果:

图6



“ios6.1 and Earlier”和“ios7.0 and Later” UI布局便统一了。

PS:
另外:在网上传的方法,亲测过:

网传方法:

1.在appdeletage里面 添加如下代码:

     if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
        self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
     }

2.在info.plist文件里面 属性:View controller-based status bar appearance  值设为NO

测试结果:

图7

底部有20像素是滑不下去的(不可见的)。而且,觉得改变了window高度,可能其他地方还需要设置下,具体怎么设置,也没再看,大家有空研究讨论下吧。

再说一点,
- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}
- (BOOL)prefersStatusBarHidden
{
    return NO;
}


在plist中设置View controller-based status bar appearance  值设为YES..


这些的作用是:基于controller,动态控制statusbar的隐藏与样式。



PS:忘记发帖如何贴图了。。。
[ 此帖被下雨天、轮滑在2013-10-10 15:40重新编辑 ]

图片:图6.png 
图片:图5.png 
图片:图4.png 
图片:图2.png 
图片:图3.png 
图片:图7.png 
图片:图1.png 
附件:    TestStatusBarUsingXib.zip (214 K) 下载次数:93

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值