2016-05-16 6 views
1

含まれている(埋め込まれた)UINavigationControllerをドラッグして画面を埋めると、私は奇妙なバグを発見しました。ナビゲーションコントローラが画面全体をカバーしていた瞬間、そのメインビューのサイズが変更され、そのビューとナビゲーションバーの間に約20ポイントのギャップが現れました。UINavigationBarとUINavigationControllerのコンテンツの間のギャップ

appearsこれはUINavigationControllerの「意図された」動作です。しかし、どうやって周りを回るのですか?

答えて

1

解決策を見つけようと数時間もたっても(そしてこれを回避する手段がないと読んでも)、十分に機能する解決策が見つかりました。私UINavigationControllerサブクラスで

私は、次のオーバーライドを追加しました:私は20ピクセルがUIStatusBarで撮影していると思い

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 is unknown ...未解決の識別子を使用する。新しい構文ですか? –

0

を。自動レイアウトでxibファイルまたはストーリーボードを使用している場合、上部の制約をトップレイアウトガイドに設定して、20ピクセルの違いが正しく処理されるようにすることができます。

enter image description here

0

は今、少し違いがあります。たぶんいくつかの構文の変更、しかしこれは私のためにそれをした!うん!!ありがとう@ルーカス・カリンスキー

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); 
      } 
     } 
    } 
関連する問題