专栏名称: 非非白
目录
相关文章推荐
桂林广播电视台飞扬883  ·  春节出游!在桂林山水间踏出新春“第一步” ·  3 天前  
桂林广播电视台飞扬883  ·  春节出游!在桂林山水间踏出新春“第一步” ·  3 天前  
51好读  ›  专栏  ›  非非白

解决隐藏 UIStatusBar 导致 UINavigationBar 抓狂的问题

非非白  · 掘金  ·  · 2018-12-18 09:02

正文

官方提供了一套 API 来控制状态栏的显示和隐藏

- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation;

- (UIViewController *)childViewControllerForStatusBarHidden;

- (BOOL)prefersStatusBarHidden;

- (void)setNeedsStatusBarAppearanceUpdate;

这一套规则在没有使用 UINavigationBar 之前,是正常的,生活是美好的。但是一旦涉及到 UINavigationBar, 就令人抓狂了,经历过的都懂,无须多言。

本库因此而生,解决有 UINavigationBar 时,隐藏状态栏带来的各种问题。

Usage

使用 hbd_statusBarHidden 取代 prefersStatusBarHidden 使用 hbd_setNeedsStatusBarHiddenUpdate 取代 setNeedsStatusBarAppearanceUpdate

在需要隐藏状态栏的控制器中编写如下代码

#import <HBDStatusBar/UIViewController+StatusBar.h>

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.hbd_statusBarHidden = YES;
}

或者

- (BOOL)hbd_statusBarHidden {
    return YES;
}

这是声明式 API,其它不需要隐藏状态栏的页面什么也不需要做。

如果需要动态隐藏或显示状态栏,在设置 hbd_statusBarHidden 后调用 hbd_setNeedsStatusBarHiddenUpdate 即可。

本库可以和 UINavigationBar 友好相处

你仍然可以通过 preferredStatusBarUpdateAnimation 来指定状态栏显示或隐藏时的动画,仍然可以通过 childViewControllerForStatusBarHidden 来指定由哪个子控制器来决定是否隐藏状态栏

如果你遇到 UINavigationBar 的相关问题,请访问 HBDNavigationBar

Installation

HBDStatusBar is available through CocoaPods . To install it, simply add the following line to your Podfile:







请到「今天看啥」查看全文


推荐文章
桂林广播电视台飞扬883  ·  春节出游!在桂林山水间踏出新春“第一步”
3 天前
桂林广播电视台飞扬883  ·  春节出游!在桂林山水间踏出新春“第一步”
3 天前
墨香中华  ·  生命就应该浪费在美好的事物上
7 年前