隱藏導(dǎo)航欄的三種方式

在項(xiàng)目中經(jīng)常碰到首頁頂部是無限輪播,需要靠最上面顯示.有的設(shè)置導(dǎo)航欄為透明等一系列的方法或者干脆簡(jiǎn)單粗暴的直接隱藏掉導(dǎo)航欄. 可一般情況下當(dāng)push到下一個(gè)頁面的時(shí)候又需要展示導(dǎo)航欄的。這里給出了三種方法.

第一種做法

注意這里一定要用動(dòng)畫的方式隱藏導(dǎo)航欄,如果不這樣使用滑動(dòng)返回手勢(shì)的時(shí)候顯的非常僵硬欢顷。為了使用滑動(dòng)返回手勢(shì)的時(shí)候效果最好,所以我推薦用動(dòng)畫的方式.這樣做有一個(gè)缺點(diǎn)就是在切換tabBar的時(shí)候有一個(gè)導(dǎo)航欄向上消失的動(dòng)畫.

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [self.navigationController setNavigationBarHidden:YES animated:animated];
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    [self.navigationController setNavigationBarHidden:NO animated:animated];
}

第二種做法

設(shè)置self為導(dǎo)航控制器的代理,實(shí)現(xiàn)代理方法,在將要顯示控制器中設(shè)置導(dǎo)航欄隱藏和顯示,使用這種方式不僅完美切合滑動(dòng)返回手勢(shì),同時(shí)也解決了切換tabBar的時(shí)候,導(dǎo)航欄動(dòng)態(tài)隱藏的問題喉脖。

tip:記得在控制器銷毀的時(shí)候把導(dǎo)航欄的代理設(shè)置為nil。
@interface CSViewController () <UINavigationControllerDelegate>

@end

@implementation CSViewController 

- (void)viewDidLoad {
    [super viewDidLoad];

    // 設(shè)置導(dǎo)航控制器的代理為self
    self.navigationController.delegate = self;
}

#pragma mark - UINavigation-Delegate
// 將要顯示控制器
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    // 判斷要顯示的控制器是否是自己
    BOOL isShowVC = [viewController isKindOfClass:[self class]];

    [self.navigationController setNavigationBarHidden:isShowVC animated:YES];
}

- (void)dealloc {
    self.navigationController.delegate = nil;
}
第三種做法

主要是針對(duì)A隱藏Nav, A push 到B,B也需要隱藏Nav的這種情況

1、自定義UINavigationController

#import "CSNavigationController.h"
#import "ONEViewController.h"
#import "TWOViewController.h"


@interface CSNavigationController ()<UINavigationControllerDelegate, UIGestureRecognizerDelegate>

@end

@implementation CSNavigationController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.delegate = self;
    // 設(shè)置全屏滑動(dòng)返回
    id target = self.interactivePopGestureRecognizer.delegate;
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)];
    [self.view addGestureRecognizer:pan];
    self.interactivePopGestureRecognizer.enabled = NO;
}

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if (self.viewControllers.count > 0) {
        viewController.hidesBottomBarWhenPushed = YES;
    }
    [super pushViewController:viewController animated:animated];
}


#pragma mark - UINavigationControllerDelegate
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    // 判斷如果是需要隱藏導(dǎo)航控制器的類,則隱藏
    BOOL isHideNav = ([viewController isKindOfClass:[ONEViewController class]] ||
                      [viewController isKindOfClass:[TWOViewController class]]);
    
    [self setNavigationBarHidden:isHideNav animated:YES];
}

但是注意setNavigationBarHidden:YES設(shè)置這行代碼后會(huì)導(dǎo)致Nav的滑動(dòng)返回手勢(shì)失效界拦,這也就是為什么前面我們?cè)谧远x導(dǎo)航的時(shí)候需要設(shè)置全屏滑動(dòng)返回了吸申。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梗劫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子截碴,更是在濱河造成了極大的恐慌梳侨,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件日丹,死亡現(xiàn)場(chǎng)離奇詭異走哺,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)哲虾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門丙躏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人束凑,你說我怎么就攤上這事晒旅。” “怎么了汪诉?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵废恋,是天一觀的道長(zhǎng)谈秫。 經(jīng)常有香客問我,道長(zhǎng)鱼鼓,這世上最難降的妖魔是什么拟烫? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮迄本,結(jié)果婚禮上硕淑,老公的妹妹穿的比我還像新娘。我一直安慰自己岸梨,他們只是感情好喜颁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著曹阔,像睡著了一般半开。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赃份,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天寂拆,我揣著相機(jī)與錄音,去河邊找鬼抓韩。 笑死纠永,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谒拴。 我是一名探鬼主播尝江,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼英上!你這毒婦竟也來了炭序?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤苍日,失蹤者是張志新(化名)和其女友劉穎惭聂,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體相恃,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辜纲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拦耐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耕腾。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖杀糯,靈堂內(nèi)的尸體忽然破棺而出扫俺,到底是詐尸還是另有隱情,我是刑警寧澤火脉,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布牵舵,位于F島的核電站柒啤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏畸颅。R本人自食惡果不足惜担巩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望没炒。 院中可真熱鬧涛癌,春花似錦、人聲如沸送火。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽种吸。三九已至弃衍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坚俗,已是汗流浹背镜盯。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留猖败,地道東北人速缆。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像恩闻,于是被迫代替她去往敵國和親艺糜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容