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

2017-11-27  本文已影响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;
}

上一篇 下一篇

猜你喜欢

热点阅读