(1)若是应用程序始终隐藏 status bar 那么恭喜呢,你在UI上须要的改动不多不多。php
(2)若是应用程序显示status bar,能够讲status bar设置成黑色不透明 ,而后在UIViewController 中加入下面的判断,git
#define IOS7_OR_LATER ( [[[UIDevice currentDevice] systemVersion] compare:@"7.0"] != NSOrderedAscending )github
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000
if ( IOS7_OR_LATER )
{
self.edgesForExtendedLayout = UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars = NO;
self.modalPresentationCapturesStatusBarAppearance = NO;
}
#endif // #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000xcode
(3)若是勾选了Hide during application lauch 的话,在IOS7 的设备上,是没有问题的,app
启动完之后status bar 会从新出现的,可是在IOS7 一下的设备,须要在launch didfinish 里面把status bar 显示出来。ide
(4)能够经过设置view的背景颜色来改变 status bar 的颜色来搭配你的nav 条。spa
(5) 有些地方肯能要对版本进行判断,分别作不一样的处理。code
(6) 能够用旧版的sdk来编译,这样在真机上仍是和原来同样的效果。具体的方法能够参考:http://github.kimziv.com/blog/2013/09/22/how-to-use-older-base-sdks-in-xcode5/blog
在iOS 8中,[UIScreen bounds] 、[UIScreen applicationFrame] 、Status bar、Keyboard这些frame都是根据设备真实方向来返回frame的,而在iOS 7中,不过是横屏仍是竖屏,iOS老是返回竖屏的frame,如如下输出:get
iOS 7:
iOS 8:
这就对某些支持横屏的App形成了困扰,其实也只须要加两个宏或者改造一下就好了:
虽然 contentInset 不属于屏幕适配的内容,可是我仍是放在屏幕适配里说一下。iOS8 和 iOS7 对 automaticallyAdjustsScrollViewInsets 属性的解释不同: