iOS之[StatusBar详解]

1.样式:UIStatusBarStyle

  • UIStatusBarStyleDefault

UIStatusBarStyleDefault

  • UIStatusBarStyleLightContentapp

    |=UIStatusBarStyleBlackTranslucentide

    |=UIStatusBarStyleBlackOpaque动画

UIStatusBarStyleLightContent

:fa-hand-o-down:info.plist中设置code

UIStatusBarStyleDefault

<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

2.显示与隐藏

2.1全局隐藏

在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]
2.2个别ViewController隐藏

UIViewController中重载sed

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

须要调用 [self setNeedsStatusBarAppearanceUpdate] 方法

3.动画效果

IOS提供了两种动画效果

  • UIStatusBarAnimationFade

  • UIStatusBarAnimationSlide

须要重载如下方法:

- (UIStatusBarAnimation )preferredStatusBarUpdateAnimation
{
    return UIStatusBarAnimationSlide;
}

可是重载这个方法后,并无动画效果。这时,咱们须要把 [self setNeedsStatusBarAppearanceUpdate] 放在动画block中执行:

[UIView animateWithDuration:0.3
                 animations:^{
                    [self setNeedsStatusBarAppearanceUpdate];
}];

IOS9以后全部经过application来设置StatusBar的方法都被破弃

IOS7以后推荐使用重载的方式来编辑StatusBar

相关文章
相关标签/搜索