美文网首页
沉浸式体验-控制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