不要隨意修改UITabbarController,UINavigationController的布局


昨天碰到一個很郁悶的問題,就是設置了hidesBottomBarWhenPushed = YES;之后,進行push操作后第一次和第二次的顯示效果不一樣。

下面來具體分析下為什么會導致這個問題。

 

首先我列出我的程序結構

UITabbarController:

+--------UINavigationController:

    +--------ListVC (self.navigationController.view.frame = CGRectMake(0, 0, 320, 480-49);)(其實這句寫在這里不合適,我稍后再說)

    +--------DetailVC(hidesBottomBarWhenPushed = YES;)

......

在ListVC中,我設置了:

進行push DetailVC之后,navigationController.view的高度是 480-49。之后pop,再push之后navigationController.view的高度變為 480。這到底是為什么?

我打印了每次push之前的navigationController.view高度都是480-49。這個應該不是問題所在,突然靈光乍現。。。。。
其實hidesBottomBarWhenPushed應該是和tabbarController有關,所以我打印了tabbarController的subviews查看原因。其中有一個

UITransitionView的高度在第一次和第二次的情況下高度分別為480, 480-49。現在我們完全有理由懷疑,由於push的detailVC設置了hidesBottomBarWhenPushed,tabbarController回去將navigationController.view的高度+49和UITransitionView的高度比較,如果大於UITransitionView的高度,則需要重新進行布局。導致UITransitionView修改高度,navigationController.view修改高度,及進行布局。

 

以上都是臆測!!!!!

 

綜上,我們不需要隨意改變UITabbarController,UINavigationController的視圖布局。因為如果我們修改了里面的布局,可能會影響他們對於我們VC的視圖布局的管理!!!如果不是有意為之,我們應該盡量讓系統寫的代碼去管理我們VC的視圖布局。所以,不要沒事就設置self.navigationController.view.frame = CGRectMake(0, 0, 320, 480-49);


免責聲明!

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



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