1

當我將我的UIViewController從我之前的控制器中移動到屏幕上時,它會對更改進行動畫處理。但是當它完成加載時,它會調整我的導航欄的大小,而跳躍的轉換使它看起來很糟糕。我怎樣才能解決這個問題?我所做的只是隱藏控制器A中的導航欄viewWillAppear,並在控制器B中顯示viewDidLoad導航欄更改高度

enter image description here

回答

0

你可以做所有你控制器A這樣的:

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

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

它仍然調整導航欄的大小。動畫使它看起來更好看,但我仍然更喜歡根本沒有調整導航欄高度。 – thecodingmate

1

好的解決了這個問題。在控制器B(我推視圖控制器)的viewDidLoad添加以下內容:

UINavigationBar *navigationBar = self.navigationController.navigationBar; 

[navigationBar setBackgroundImage:[UIImage new] 
        forBarPosition:UIBarPositionAny 
         barMetrics:UIBarMetricsDefault]; 

[navigationBar setShadowImage:[UIImage new]]; 

然後在你的UIViewController的XIB使導航欄上的高度約束,將其設置爲68(從測試實際線似乎在68和69之間)。絲綢般光滑。

編輯:如果有人有任何更好的想法,請添加它們。我將不得不修改此屏幕旋轉的解決方案,因此它不完美。