美文网首页
沉浸式体验-控制StatusBar的显示和风格

沉浸式体验-控制StatusBar的显示和风格

作者: 请叫我作家 | 来源:发表于2017-11-27 19:08 被阅读78次

    App Store 更新到iOS11之后,沉浸式体验也许会在不久之后🔥起来吧!

    我的粗略感受

    1. 进入到某一详情页面需要隐藏到statusBar,导航栏的返回,让用户自然而然的沉浸在当前页面是第一步
    2. 第二步就是....剩下的交给产品和设计的妹子们吧。

    技术如何去实现呢

    • 这里分几步来说:
    1. 已经被遗弃的方法(iOS2.0 - iOS9.0)
    @interface UIApplication(UIApplicationDeprecated)
    
    // Setting the statusBarStyle does nothing if your application is using the default UIViewController-based status bar system.
    @property(readwrite, nonatomic) UIStatusBarStyle statusBarStyle NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController preferredStatusBarStyle]") __TVOS_PROHIBITED;
    - (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle animated:(BOOL)animated NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController preferredStatusBarStyle]") __TVOS_PROHIBITED;
    
    // Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
    @property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController prefersStatusBarHidden]") __TVOS_PROHIBITED;
    - (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_DEPRECATED_IOS(3_2, 9_0, "Use -[UIViewController prefersStatusBarHidden]") __TVOS_PROHIBITED;
    
    @end
    
    1. 在iOS7 之后苹果推荐方式如下:
    @property(nonatomic, readonly) BOOL prefersStatusBarHidden NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; // Defaults to NO
    
    @property(nonatomic, readonly) UIStatusBarStyle preferredStatusBarStyle NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; // Defaults to UIStatusBarStyleDefault
    
    
    • 对于这两种方法的实现方式
    1. 第一种方法我们只需要在对应的地方进行如下的设置即可:
        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;
    
        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    
    1. 第二种方法只需要在对应的控制器中如下实现:
    - (BOOL)prefersStatusBarHidden{
        return YES;
    
    }
    
    - (UIStatusBarStyle)preferredStatusBarStyle{
    
        return UIStatusBarStyleDefault;
    }
    
    • 那么他们之间有什么相同点呢
    1. 我们只需要在info.plist如下配置即可:
      1.Status bar is initially hidden:初始化状态栏
      2.View controller-based status bar appearance
    image.png
    1. 如果采用的是第二种方式,并且有导航栏的你可能还需要在UINavigationController中实现:
    - (UIViewController *)childViewControllerForStatusBarStyle{
        return self.topViewController;
    
    }
    
    - (UIViewController *)childViewControllerForStatusBarHidden{
    
        return self.topViewController;
    }
    
    
    • 时间匆忙,大概就留了一些关键代码,大家有不懂的可以直接留言,我会在第一时间回复大家的哦

    • 有写的不详细的或者错误的地方还请大家帮忙修正哦,一起成长!

    • 最后既然看到这里了,别忘记star哦

    相关文章

      网友评论

          本文标题:沉浸式体验-控制StatusBar的显示和风格

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