http://blog.csdn.net/toss156/article/details/11843873#commentshtml
(1)若是应用程序始终隐藏 status bar 那么恭喜呢,你在UI上须要的改动不多不多。ios
(2)若是应用程序显示status bar,能够讲status bar设置成黑色不透明 ,而后在UIViewController 中加入下面的判断,git
- #define IOS7_OR_LATER ( [[[UIDevice currentDevice] systemVersion] compare:@"7.0"] != NSOrderedAscending )
-
- #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000
- if ( IOS7_OR_LATER )
- {
- self.edgesForExtendedLayout = UIRectEdgeNone;
- self.extendedLayoutIncludesOpaqueBars = NO;
- self.modalPresentationCapturesStatusBarAppearance = NO;
- self.navigationController.navigationBar.translucent = NO;
self.tabBarController.tabBar.translucent = NO;
- }
- #endif // #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000
1.在appdeletage里面 添加以下代码: if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { [application setStatusBarStyle:UIStatusBarStyleLightContent]; self.window.clipsToBounds =YES; self.window.frame = CGRectMake(0,50,self.window.frame.size.width,self.window.frame.size.height-20); } 2.在info.plist文件里面 属性:View controller-based status bar appearance 值设为NO 接着运行程序,能够看到StatusBar了github
(3)若是勾选了Hide during application lauch 的话,在IOS7 的设备上,是没有问题的,xcode
启动完之后status bar 会从新出现的,可是在IOS7 一下的设备,须要在launch didfinish 里面把status bar 显示出来。app

(4)能够经过设置view的背景颜色来改变 status bar 的颜色来搭配你的nav 条。ide
(5) 有些地方肯能要对版本进行判断,分别作不一样的处理。布局
(6) 能够用旧版的sdk来编译,这样在真机上仍是和原来同样的效果。具体的方法能够参考:http://github.kimziv.com/blog/2013/09/22/how-to-use-older-base-sdks-in-xcode5/动画
使用视图控制器(View Controller)
在iOS 7中,视图控制器都是全屏的。iOS 7视图控制器的外观给人传达了更细腻的控制感。特别是新的全屏外观让你能够指定视图的每一个边缘的布局。
UIViewController提供了以下属性来调整视图控制器的外观:
1.edgesForExtendedLayout
:这个属性属于UIExtendedEdge类型,它能够单独指定矩形的四条边,也能够单独指定、指定所有、所有不指定。
使用edgesForExtendedLayout指定视图的哪条边须要扩展,不用理会操做栏的透明度。这个属性的默认值是UIRectEdgeAll。
2.extendedLayoutIncludesOpaqueBars:
若是你使用了不透明的操做栏,设置edgesForExtendedLayout的时候也请将 extendedLayoutIncludesOpaqueBars的值设置为No(默认值是YES)。
3.automaticallyAdjustsScrollViewInsets
:若是你不想让scroll view的内容自动调整,将这个属性设为NO(默认值YES)。
iOS 7容许视图控制器在app运行过程当中改变系统状态栏的样式。开启这个功能,请在Info.plist文件中添加键 UIViewControllerBasedStatusBarAppearance,并将值设为YES。动态改变系统状态栏的一个好方法是重写 preferredStatusBarStyle方法,用一个动画模块来更新状态栏外观,并调用 setNeedsStatusBarAppearanceUpdate方 法。........................................
状态栏能够设置成半透明, 这是众所周知的, 用UINavigationController,在页面切换时, 若是你的子viewController的view是全屏的(480*320) 就会出现错位, 表现是因此的子view会向下偏移了 20像素
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque];ui
self.navigationController.navigationBar.translucent = YES;
[self.navigationController.view setNeedsLayout];
self.wantsFullScreenLayout = YES;