2016-09-22 2 views
0

Я создал категорию на UIViewController под названием UIViewController+CustomNavigationBar, чтобы легко обрабатывать отображение и удаление подкласса UINavigationBar под заказ только через три строки кода!По умолчанию UINavigationBar titleView некорректно после пользовательского отображения UINavigationBar

Однако одна из проблем, с которыми я сталкиваюсь, заключается в том, что когда я выхожу на контроллер вида, который отображает мою настраиваемую панель навигации, вертикальное центрирование заголовка элемента управления предыдущего элемента управления UINavigationBar контроллера представления отображается некорректно.

Поскольку это немного трудно описать, вот ссылка на анимированный GIF выпуска: https://github.com/kenmhaggerty/UIViewController-CustomNavigationBar/blob/demo/Sample%20Project/Issue%20Demo.gif

Я делаю много в моем коде, поэтому я также posted it to GitHub. Некоторые ключевые моменты, хотя являются:

  • Я установил свой обычай UINavigationBar используя [self.navigationController setValue:navigationBar forKeyPath:NSStringFromSelector(@selector(navigationBar))] в swizzled реализаций -[viewWillAppear:] и -[viewWillDisappear:] в моей категории.
  • Я использую Auto Layout для моего пользовательского UINavigationBar.
  • Когда появится мой контроллер просмотра с использованием моей настраиваемой навигационной панели, я сохраняю существующую навигационную панель и снова устанавливаю ее обратно на контроллер навигации, когда вызывается мой контроллер просмотра с настраиваемой навигационной панелью.
  • Поскольку эта проблема влияет на мой исходный контроллер представления, этот вид контроллера navigationItem.titleView равен нулю, поэтому я не могу (по-видимому) отрегулировать рамку представления заголовка вручную.

Любая идея, почему эта странная проблема с макетами может возникнуть? Кроме того, есть и другие несоответствия, поэтому, если у вас есть время, пожалуйста, сделайте fork + проверить его.

ответ

0

Я решил эту проблему, повторно установив навигационную панель с новым экземпляром UINavigationBar!

Смежные вопросы