美文网首页iOS学习iOS 开发每天分享优质文章
IOS9新特性 最顶层window决定状态栏显示和样式

IOS9新特性 最顶层window决定状态栏显示和样式

作者: 禾子_____ | 来源:发表于2017-07-18 10:32 被阅读63次
    [填坑记录]

    在使用IOS9新框架[ReplayKit]进行app录屏的时候,
    为了不把录屏相关控制操作的UI录进去,
    需要用不同的把录的页面和操作的界面UI放在不同的window上,
    于是出现了"在录屏页面隐藏状态栏之后,添加新的window,状态栏又显示了"的问题.
    IOS8以前控制状态栏的方法都不管用了.

    IOS6-8方法: 设置 info.plist 添加 View controller- based status bar appearance
    1.当View controller- based status bar appearance为YES,状态栏由当前控制器控制;

    //在当前页面添加控制
    - (BOOL)prefersStatusBarHidden 
    { 
      return YES; 
    }
    

    2.当View controller- based status bar appearance为NO,状态栏由应用UIApplication来管理。

    [[UIApplication sharedApplication] setStatusBarHidden:<#(BOOL)#>];
    [[UIApplication sharedApplication] setStatusBarStyle:<#(UIStatusBarStyle)#>];
    

    IOS9以后新添加的window需要设置rootController:

    //添加window
    UIWindow *window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    [window setRootViewController:self];//设置当前页为新window根控制器
    [window makeKeyAndVisible];
    
    //控制状态栏
    - (BOOL)prefersStatusBarHidden {
        return YES;
    }
    //设置样式
    - (UIStatusBarStyle)preferredStatusBarStyle {   
        return UIStatusBarStyleLightContent;
    }
    

    PS: IOS9中如果创建多个window,则改变状态栏的样式,只能在最顶层的window中的控制器中设置状态栏样式才有效。

    相关文章

      网友评论

        本文标题:IOS9新特性 最顶层window决定状态栏显示和样式

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