一般的介面顯示需求:在主頁面是顯示 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;
}
複製程式碼