2016-05-16 55 views
1

有一個可以拖動以填滿屏幕的包含的(嵌入的)UINavigationController,我發現了一個奇怪的錯誤。恰恰在導航控制器覆蓋整個屏幕的那一刻,其主視圖調整了大小,並在該視圖和導航欄之間出現了大約20分的差距。UINavigationBar和UINavigationController的內容之間的差距

appears這是UINavigationController中的「預期」行爲。但你如何解決它?

回答

1

經過許多小時的努力尋找解決方案(甚至沒有辦法解決這個問題),我發現了一個運行良好的解決方案。

在我的UINavigationController子類中添加以下覆蓋:

override public func viewDidLayoutSubviews() { 

    super.viewDidLayoutSubviews(); 

    if self.view.frame.size.height == Screen.height { 
     for childVC in childViewControllers { 
      childVC.view.frame = CGRectMake(0, navigationBar.frame.size.height, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height - navigationBar.frame.size.height); 
     } 
    } 
} 
+0

Screen.height是未知...使用未解析的標識符。任何新的語法? –

0

我覺得20像素採取的是UIStatusBar。如果您在自動佈局中使用xib文件或故事板,則可以將頂部約束設置爲頂部佈局指南,以便正確處理20像素差異。

enter image description here

0

現在有一點點不同。也許一些語法更改,但這對我來說是這樣!是啊!謝謝@Lukas Kalinski

override public func viewDidLayoutSubviews() { 

     super.viewDidLayoutSubviews(); 

     if self.view.frame.size.height == UIScreen.mainScreen().bounds.height { 
      for childVC in childViewControllers { 
       childVC.view.frame = CGRectMake(0, navigationBar.frame.size.height, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height - navigationBar.frame.size.height); 
      } 
     } 
    } 
相關問題