關於navigationcontroller 隱藏navigationBar問題


假設ViewController A 和 B 都被添加到navigationcontroller 棧中,順序是A->B,A 頁面隱藏導航條,B 頁面顯示導航條。
 
最簡單實現是在 A 的 viewWillAppear 中隱藏navBar,在viewWillDisappear 中顯示navBar,代碼如下
- (void)viewWillAppear:(BOOL)animated
{
    [superviewWillAppear:animated];
 
    [self.navigationControllersetNavigationBarHidden:YESanimated:NO];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [superviewWillDisappear:animated];
   
    [self.navigationControllersetNavigationBarHidden:NOanimated:NO];
}
 
運行會出現pop回來navBar位置黑塊問題,像下面這樣,這個問題是隱藏navBar 時animation為NO導致的。

 

 
 
那么我們將animation 設置為YES,運行會發現在切換tab時又會出現抖動問題。
 

 

 
 
最終的解決方法是將animation 設置為當前調用的動畫狀態,就能解決上面兩個問題
- (void)viewWillAppear:(BOOL)animated
{
    [superviewWillAppear:animated];
 
    [self.navigationControllersetNavigationBarHidden:YESanimated:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [superviewWillDisappear:animated];
   
    [self.navigationControllersetNavigationBarHidden:NOanimated:animated];
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM