UIStatusBarStyleLightContentapp
|=UIStatusBarStyleBlackTranslucentide
|=UIStatusBarStyleBlackOpaque动画
:fa-hand-o-down:info.plist中设置code
<key>UIStatusBarStyle</key> <string>UIStatusBarStyleDefault</string>
:fa-hand-o-down:代码中设置,须要在UIViewController中重载如下方法ci
//IOS7+ - (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; } //IOS6+ IOS9.0中废弃 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
:fa-hand-o-down:用UINavigationController作window.rootViewController时,须要重写[childViewControllerForStatusBarStyle]方法,[preferredStatusBarStyle]方法才会被调用animation
- (UIViewController *)childViewControllerForStatusBarStyle{ return self.topViewController; } - (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; }
:fa-exclamation-circle:[preferredStatusBarStyle]不能直接调用,在须要改变样式的地方调用: **[self setNeedsStatusBarAppearanceUpdate] **string
在info.plist中设置it
<key>UIViewControllerBasedStatusBarAppearance</key> <false/> <key>UIStatusBarHidden</key> <true/>
View controller-based status bar appearance:io
|-YES:[默认] | View controller对status bar的设置优先级高于application的设置 | 使用[prefersStatusBarHidden] | |-NO: 以application的设置为准 | view controller的prefersStatusBarHidden方法无效 | 须要用[[UIApplication shareApplication] setStatusBarHidden]
UIViewController中重载sed
- (BOOL)prefersStatusBarHidden { return YES; }
须要调用 [self setNeedsStatusBarAppearanceUpdate] 方法
IOS提供了两种动画效果
UIStatusBarAnimationFade
UIStatusBarAnimationSlide
须要重载如下方法:
- (UIStatusBarAnimation )preferredStatusBarUpdateAnimation { return UIStatusBarAnimationSlide; }
可是重载这个方法后,并无动画效果。这时,咱们须要把 [self setNeedsStatusBarAppearanceUpdate] 放在动画block中执行:
[UIView animateWithDuration:0.3 animations:^{ [self setNeedsStatusBarAppearanceUpdate]; }];
IOS9以后全部经过application来设置StatusBar的方法都被破弃
IOS7以后推荐使用重载的方式来编辑StatusBar