iOS 隱藏導航欄整個視圖上移閃屏問題

在iOS開發(fā)中,特別是一些首頁展示上要去掉導航欄(UINavigationBar)。
最簡單的辦法在- (void)viewWillAppear:(BOOL)animated方法中直接設置隱藏導航欄,在(void)viewWillDisappear:(BOOL)animated方法中在顯示出導航欄

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:YES];
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}

但是這樣會出現(xiàn)一個問題,就是切換到這個界面的時候,會出現(xiàn)整個界面上移的效果,體驗不是很好。如圖所示的效果

切換界面上移.gif

這時候你可能想到是:你設置隱藏導航欄的時候animate動畫設置為NO就不會上移了。 這樣確實是不會有界面整體上移的假象,但是會出現(xiàn)另外一個問題,當你直接返回的時候都沒有問題,一旦你用側滑返回的時候,界面最上面導航欄那里就出現(xiàn)了異常,如圖所示

去掉動畫隱藏效果.gif

這到底應該怎么做呢???
我的解決辦法是:
在要隱藏導航欄的界面的viewWillAppear方法中隱藏導航欄
,當你跳轉進入到下一個的時候,要顯示導航欄,在這個界面的viewWillAppear方法中設置導航欄出現(xiàn)。
方法和上面的一致,

//當前要隱藏導航欄的VC
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:YES];
}

//要顯示導航欄的VC
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}

這樣就會避免了上面的兩個問題。但是這樣子做比較麻煩,就是你在當前隱藏導航欄的VC所有可跳轉到的VC,都要設置一下顯示導航欄。

朋友們有別的解決方案,跪求告知,O(∩_∩)O謝謝

2017.10.9補充一個問題點:

在開發(fā)中可能會遇到在不同的界面改變導航欄顏色的需求,在不同的VC中重寫了這個方法設置導航欄顏色,- (UIStatusBarStyle)preferredStatusBarStyle,就可能會出現(xiàn)異常。
解決方案:

其實解決的辦法很簡單,就是在導航控制器中重寫childViewControllerForStatusBarStyle方法,如下:

- (UIViewController *)childViewControllerForStatusBarStyle{
    return self.visibleViewController;
}

這句代碼的作用是,不調(diào)用自己本身的preferredStatusBarStyle方法而是調(diào)用顯示的控制器的preferredStatusBarStyle方法。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 背景 最近要做一個需求,需要把其中兩個頁面做成全屏的(無導航欄)。我把這個主要的代碼抽出來上傳到github上,導...
    半邪亦正閱讀 16,418評論 19 54
  • IOS的項目多數(shù)會遇到控制狀態(tài)欄和導航欄的問題,比如隱藏狀態(tài)欄、控制狀態(tài)欄的文字顏色等,導航欄也有同樣需求。本文總...
    YHWXQ簡簡單單的生活閱讀 1,869評論 1 8
  • UIWindow 初始化: self.window= [[UIWindowalloc]initWithFrame:...
    Sunny_Fight閱讀 1,124評論 0 1
  • 第一封 生命里還有些美好的東西,確實不多,所以更加不該辜負。 第二封 人總要長大,這個世界不會在乎你是否無依無靠,...
    阿七啊277閱讀 557評論 0 0
  • 時間的沙漏沉淀著無法逃離的過往, 記憶的雙手總是拾起那些明媚的憂傷。 是不是該放下過去給自己一個方向, 是不是漂泊...
    貳十三先生閱讀 490評論 0 4

友情鏈接更多精彩內(nèi)容