2016-05-16 4 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); 
      } 
     } 
    } 
Смежные вопросы