iOS 隱藏&顯示tabBar

溫特兒發表於2019-03-16

一般的介面顯示需求:在主頁面是顯示 tabBar 的,在所有的子頁面隱藏 tabBar,做法很簡單

當push到一個新的頁面時隱藏tabBar
viewController.hidesBottomBarWhenPushed = YES;
複製程式碼

但是,需求是這樣的:

主頁是顯示tabBar的,進入第二個頁面,隱藏tabBar,再進入第三個頁面,顯示tabBar。

廢話不多說了,看程式碼

// 強制顯示tabbar
NSArray *views = self.tabBarController.view.subviews;
UIView *contentView = [views objectAtIndex:0];
contentView.height -= 49;
self.tabBarController.tabBar.hidden = NO;
複製程式碼

僅僅這樣寫的話,會出現問題的,(如果不做處理的話,從第三個頁面進入到第四個頁面,將不會隱藏tabBar)

比較完善的做法是這樣的

雖然會在使用右滑手勢返回pop時,介面有些不太雅觀,但還是可以接受的?

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

     // 強制顯示tabbar
     NSArray *views = self.tabBarController.view.subviews;
     UIView *contentView = [views objectAtIndex:0];
     contentView.height -= 49;
     self.tabBarController.tabBar.hidden = NO;
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    
    // 強制隱藏tabbar
    NSArray *views = self.tabBarController.view.subviews;
    UIView *contentView = [views objectAtIndex:0];
    contentView.height += 49;
    self.tabBarController.tabBar.hidden = YES;
}
複製程式碼

相關文章