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
![]() |
附件:
![]() |
关于ios7 statusBar适配,在这里总结下吧(转自cocoaChina)
最新推荐文章于 2016-01-07 12:22:56 发布