IOS7.0 及以上
在TabBarController + UINavigationController 中, 若從進入下一級頁面隱藏Tabbar,采用的方法就是用系統(tǒng)提供的方法,setHidesBottomBarWhenPushed。默認(rèn)為NO。設(shè)為YES時,當(dāng)PUSH到UINavigationController 中就隱藏Tabbar,直到它POP出來。這樣就OK了。
但這存在一種問題,就是當(dāng)切換window的rootViewController 時,就會失效,Tabbar顯示出來了。
解決。
1.如何在切換后實現(xiàn)隱藏。
切換回TabBarController 時,判斷當(dāng)前選擇的UINavigationController 分支的層級,如果UINavigationController的viewControllers.count 為0,說明在UINavigationController 頂層是需要顯示Tabbar,若非0就隱藏。
這里注意一點,要先設(shè)置window的rootViewController 為TabBarController。再去做判斷,否則無效果。
2.問題又來了,隱藏Tabbar后,原視圖的view并沒有變化,高度還是未包含tabbar的高度。
解決:
在UINavigationController 的繼承類里或者每一個具體頁面中加入
self.edgesForExtendedLayout=UIRectEdgeBottom;
self.automaticallyAdjustsScrollViewInsets=NO;
這兩句話。