1、如果设置了self.navigationController.navigationBar 设置了UIBarMetricsLandscapePhone的背景;而没有设置UIBarMetricsDefault的背景,navigationBar会变透明
如图所示: navigationBar透明
![](http://cc.cocimg.com/bbs/attachment/Fid_6/6_31940_304ce5acf9d85a1.png)
2、上图还出现了一个问题,如果没有设置 self.automaticallyAdjustsScrollViewInsets = NO,那么iOS7下会自动让scrollView滑动多次,以满足UITableView第一行的显示需要,这又带来了另外一个问题,下拉刷新的View的frame也随之发生了改变,导致整个下拉刷新不可用了
3、self.automaticallyAdjustsScrollViewInsets 这个属性是IOS7才有的新方法,目的就是为了让scrollView自动适应屏幕,如果self.automaticallyAdjustsScrollViewInsets = NO,那么效果会变成下图所示:
![](http://cc.cocimg.com/bbs/attachment/Fid_6/6_31940_5a768a91a510759.png)
我的ViewController继承的是UITableViewController, 所以TableView是随系统而产生的,在IOS7之前,tableView的Frame的起始点是(0, 20),在IOS7之后,它的起始点变成了(0,0),这个时候如果为了让下拉刷新能正常工作,必须设置self.edgesForExtendedLayout = UIRectEdgeNone
(这种情况适用于容器建立在UINavigationController).
4、 如果设置了self.navigationController.navigationBar 设置UIBarMetricsDefault的背景为空,则默认的是IOS7上边栏平铺效果,如果设置了图片,并且这个图片高度保持在44(88),那么IOS5,6,7的效果是一致的。
5、 iOS7中的StatusBar的没有了背景,他的UIStatusBarStyleLightContent和UIStatusBarStyleDefault只会改变StatusBar的文字,都不会有背景
6、 ViewController-Based Status Bar Appearance控制了StatusBar的外观,如果设置为YES,则会调用preferredStatusBarStyle。如果为NO,则通过传统方式来控制
下图示IOS6,7上的正常情况
![](http://cc.cocimg.com/bbs/attachment/Fid_6/6_31940_f49ac64add065ad.png)
![](http://cc.cocimg.com/bbs/attachment/Fid_6/6_31940_73b1dd828ffd9fb.png)
![](http://cc.cocimg.com/bbs/attachment/Fid_6/6_31940_15cd325851ca187.png)
7、在IOS7下,如果不设置navigationBar的背景图片,而且设置[ navigationBar setBarStyle:UIBarStyleBlackTranslucent];可以获取默认的黑色毛玻璃效果哟
![](http://cc.cocimg.com/bbs/attachment/Fid_6/6_31940_321281a44f9be14.png)
如果大家还有遇到一些奇怪的问题,欢迎大家来补充
本文参考文档
http://blog.jaredsinclair.com/post/61507315630/wrestling-with-status-bars-and-navigation-bars-on-ios-7
https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/index.html