美文网首页iOS归纳
iOS正向 - 解决StatusBarStyle设置问题

iOS正向 - 解决StatusBarStyle设置问题

作者: Metros | 来源:发表于2019-01-02 17:04 被阅读17次

    问题列表

    1.childViewControllerForStatusBarStyle不执行
    2.preferredStatusBarStyle不执行
    3.IOS7以上,修改状态栏无效

    直接解决问题:

    1.info.plist中设置View controller-based status bar appearance 为 yes


    修改info.plist

    2.分析自己视图层级。如果当前的viewController的父容器(一般为navigationController)的navibar 设置hidden为yes时:

    UITabbarViewContrller.m
    
    - (UIViewController *)childViewControllerForStatusBarStyle{
        return self.selectedViewController;
    }
    
    UINavigationController.m
    
    - (UIViewController *)childViewControllerForStatusBarStyle{
        return self.topViewController;
    }
    
    UIViewContrller.m
    
    - (UIStatusBarStyle)preferredStatusBarStyle{
        return UIStatusBarStyleLightContent;
    }
    - (void)viewDidLoad {
        [super viewDidLoad];
        [self setNeedsStatusBarAppearanceUpdate];
    }
    

    ps:一般层级为上述结构,还有一些特别的结构,但是总结一下,顶级容器就是keywindow的rootViewController,如果这方面有疑问可以留言讨论。

    3.当viewController的navigationController的naviBar的hidden不为yes的时候:

    UINavigationController.m
    
    - (UIViewController *)childViewControllerForStatusBarStyle{
        return self.topViewController;
    }
    
    UIViewContrller.m
    
    - (UIStatusBarStyle)preferredStatusBarStyle{
        return UIStatusBarStyleLightContent;
    }
    - (void)viewDidLoad {
        [super viewDidLoad];
        [self setNeedsStatusBarAppearanceUpdate];
    }
    

    即可。

    相关文章

      网友评论

        本文标题:iOS正向 - 解决StatusBarStyle设置问题

        本文链接:https://www.haomeiwen.com/subject/bndvcqtx.html