看到现在比较大的几个应用在iOS7下纷纷统一了导航栏和状态栏的样式,自己也有点坐不住的感觉,所以搜索了下总结了几个适配方法

一 在iOS7下最底层设置一个controller的view顶部空出20像素再其它的controller都往底层上加的。(现在用的方法)

这样的方式如果你的层级结构一样的话修改起来还是相当方便的,但是如果不是的那还是建议不要采取这样的方式。这样的方式其实就是类似自己做的iOS6下的效果的状态栏不加入考虑的范围。


二 使用系统的navigationcontroller

好处是在iOS7和iOS6下你只要自己去定义不同的样式其它的都不需要管,只是代码上对于背景图片等设置的特别判断下,这些统一的你也可以放在appdelegate里面统一的设置,如:

[[UINavigationBar appearance] setBackgroundImage:[UIImage  imageNamed:@"nav_bg"] forBarMetrics:UIBarMetricsDefault];

只是设置背景图片需要不同的图片大小的自己要注意下,这样就可以后期方便的维护。其实使用原生的我主要看上的是在iOS7下自带了右划手势的返回,习惯了使用手势图方便的这还是挺不错的。如果对于导航栏和push效果没有特殊要求的建议使用这种默认的方式。


三 自己定义view的作为导航栏

这种对于自定义化导航栏和采用自己的push动画的比较好。实现方式:分为代码实现和storyboard实现UI,代码实现当然是通过判断系统来设置不同的frame。我使用的storyboard的方式,在viewcontroller中△x/△y/△width/△height的设置,你可以调整storyboard在6.0下显示的效果,再将导航栏的△height+20个像素,并且将导航栏下面的显示内容view的△y的也加20像素这样在iOS6/7上就能正常显示了。


当然还有其它的显示方式例如创建俩套storyboard,根据不同的系统加载不同的,但是这样做的后期维护成本太大。


本文只是自己做个记载,如果有什么错误的地方欢迎拍砖,还有其它的实现方式也欢迎大家更新。