2017-01-18 2 views
1

Я пытаюсь понять, как изменить высоту панели навигации. Всякий раз, когда я вставляю его в свое приложение, он короче, чем все навигационные панели, используемые в обычных приложениях Apple (например, «Сообщения и настройки»). Я хотел бы, чтобы он дошел до этой высоты, потому что, когда я пытаюсь добавить кнопку бара, он конфликтует со строкой состояния. Я также читал, что в качестве разработчика вы не должны изменять высоту панели навигации, поэтому я немного смущен. Наконец, я просмотрел эту страницу переполнения стека: How can I change height of Navigation Bar Swift 3. Я пытался реализовать код ...Изменение высоты панели навигации

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    let height: CGFloat = 50 //whatever height you want 
    let bounds = self.navigationController!.navigationBar.bounds 
    self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: bounds.height + height) 

} 

... но мое приложение разбился, когда я сделал это. Я использую Xcode 8.2 beta с Swift 3.

+0

Показать код, который вызвал сбой. – toddg

+0

@toddg переопределение фонд viewDidAppear (_ анимированный: Bool) { super.viewDidAppear (анимированный) Высота пусть: CGFloat = 50 пусть Bounds = self.navigationController .navigationBar.bounds self.navigationController .navigationBar.frame = CGRect!? (x: 0, y: 0, width: bounds.width, height: bounds.height + height) } – AEquinox01

+0

Измените свой вопрос и введите код. – toddg

ответ

0

Я не думаю, что вы можете изменить размер навигации. Но вот как я рекомендую вам это сделать.

  1. Удалить навигационную панель по умолчанию.

  2. Создайте представление, похожее на панель навигации, как вы проектируете, добавляет ограничения> ведущие, конечные, верхние и высотные для этого вида . так что прикрепите его сверху, слева и справа от высоты вашего дизайна .

  3. Добавьте 2 кнопки влево и вправо, если необходимо, что будет похоже на панель навигации. добавьте ограничения кнопок> верхняя, верхняя, нижняя и ширина для левой и задней, верхней, нижней и правой ширины.
  4. Добавьте UILabel, который будет вашим заголовком панели навигации. Добавьте ограничения ярлыков, ведущие с левой кнопкой, завершающие с правой кнопкой, верхние и снизу с созданным вами видом навигации. Сделайте текст uilabel сцентрированный.

Здесь у вас есть пользовательская панель навигации. На каждом контроллере все, что вам нужно сделать, это CMD + C и CMD + V на другом контроллере добавить ведущие, конечные и верхние ограничения. Надеюсь, это помогло. enter image description here

+0

Это определенно полезно (хотя я не уверен, почему Apple не позволяет разработчикам изменять высоту навигационной панели), но затем возникает второй вопрос. Как заставить обычную кнопку выглядеть как кнопка бара. Я пытаюсь сделать кнопку похожей на «X», что легко с помощью кнопки панели (установите ее на «стоп» под системным элементом), но не (насколько мне известно) с обычной кнопкой. – AEquinox01

+0

@ AEquinox01 Все, что вам нужно сделать, это получить X как png, вероятно, от дизайна и установить его как изображение кнопки, сделать кнопку как системную кнопку, а не обычай, а в цветовом оттенке вы можете изменить этот цвет X на все, что вам нужно. Дайте мне знать, если вам нужна дополнительная помощь. Если это помогло вам принять ответ. – Aragunz

+0

Кажется, я не могу найти png - не могли бы вы объяснить немного подробнее, как это сделать? @Florentt – AEquinox01

0

Возможно, и просто, добавить независимую навигационную панель и сопоставить ее с нормальной навигационной строкой и функцией поворота. Here is how to do it (link includes a video):

В Interface Builder:

  • Добавить UINavigationBar на ваш взгляд, расположенного на месте верхней направляющей макета.

  • Установить ограничения для ведущего пространства на контейнерную маржу, проложить пространство до поля контейнера и верхнее пространство контейнера - все с отменой выбора «Относительно поля» и постоянным значением 0 (ноль).

  • С выбранной навигационной панелью в Identity Inspector добавьте путь к ключу barPosition. Дайте ему тип Number и значение 3.

Это должно быть все, что вам нужно.Тем не менее, если вы выполнили эти шаги, и ваш проект не кажется, как ключевой путь, а затем продолжить следующим образом:

  • Удалите barPosition ключ путь от навигации Бара удостоверения инспектора.
  • Добавьте IBOutlet для панели навигации в контроллер вашего вида.
  • Установите контроллер своего вида на UINavigationBarDelegate.
  • Добавьте делегат метод func position(for bar: UIBarPositioning) -> UIBarPosition к контроллеру вашего вида и верните значение UIBarPosition.topAttached.
Смежные вопросы