2015-08-11 5 views
23

Я работаю над приложением, в котором мне нужно оставить панель навигации. Когда я пишу какой-либо заголовок на баре, время и название рода получаются очень близко друг к другу. Я хотел увеличить высоту бара, чтобы он мог получить какую-то передышку.Как увеличить высоту панели навигации в xcode?

+0

ru использовали раскадровку или xib –

+1

Я использую main.storyboard –

+0

Есть очень хороший ответ http://stackoverflow.com/questions/32142375/changing-the-height-of-the-navigation-bar-ios- swift –

ответ

0

Вы не можете изменить высоту по умолчанию NavigationBar, если я не ошибаюсь.

Хотя, вы можете создать пользовательский NavigationBar и добавить к нему пользовательскую высоту.

+0

нет мы можем изменить высоту ' –

+0

и как это сделать? –

34

выберите ViewController -> выберите навигации Пункт ->Подскажите -> Добавить пространство это увеличитьheight из **Navigation bar**

Проверьте изображение здесь: enter image description here

KG

Программно

Добавить это в viewWillAppear или viewDidAppear метод

Objective-C

[self.navigationController.navigationBar setFrame:CGRectMake(0, 0, self.view.frame.size.width,80.0)]; 

Свифта

self.navigationController.navigationBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 80.0) 

Свифта-3

self.navigationController!.navigationBar.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 80.0) 

IOs 11

enter image description here

Objective C

for (UIView *subview in self.navigationController.navigationBar.subviews) { 
    if ([NSStringFromClass([subview class]) containsString:@"BarBackground"]) { 
     CGRect subViewFrame = subview.frame; 
     // subViewFrame.origin.y = -20; 
     subViewFrame.size.height = 100; 
     [subview setFrame: subViewFrame]; 
    } 
} 

быстрое

for subview in (self.navigationController?.navigationBar.subviews)! { 
     if NSStringFromClass(subview.classForCoder).contains("BarBackground") { 
      var subViewFrame: CGRect = subview.frame 
      // subViewFrame.origin.y = -20; 
      subViewFrame.size.height = 100 
      subview.frame = subViewFrame 

     } 

    } 
+0

Перемещение приглашения с белым текстом РАБОТАЕТ, не уверен, почему, но все в порядке: D –

+0

Установка программно в viewWillAppear не работает в iOS 10 –

+1

@ Anbu.Karthik, ваш ответ работает на меня, но для collectionView Controller положение навигационной панели назад и Collection VC. Вид спереди. Как настроить навигационную панель на передний план? –

8

Добавить это в viewWillAppear метод

CGFloat height = 80; 
[self.navigationController.navigationBar setFrame:CGRectMake(0, 0, 
self.view.frame.size.width,height)]; 

, если увеличить первый и сжимается до первоначальной высоты добавьте этот код в viewDidAppear метод

+1

Мое предложение любезно использовать пользовательскую навигационную панель –

+1

, к сожалению, она не работает в ios11 – Max

+0

Вот почему я уже предложил использовать настраиваемую навигационную панель –

11

ЭТО РЕШЕНИЕ БОЛЬШЕ НЕ РАБОТАЕТ В Xcode 8.xx и более поздние версии!

вы также можете увеличить высоту, не создавая пользовательские навигации выполните следующие действия

Шаг 1 Selecte навигационную панель в раскадровке или XIB

enter image description here

Шаг 2 Скопируйте ObjectID от Идентификационного инспектора

enter image description here

Шаг 3 Откройте Раскадровка/XIB в качестве исходного кода

enter image description here

Шаг 4 Найти ObjectID в исходном коде в прошлом ObjectID в поисках

enter image description here

шаг 5 Изменить высоту! вот и все

enter image description here

Я надеюсь, что это поможет вам

+0

Является ли это яблоком? дайте мне знать – iPhoneDev

+0

да, определенно –

+3

Не работает на xCode8 –

10

Добавьте следующее расширение для вашего проекта:

import UIKit 

extension UINavigationBar { 

    override open func sizeThatFits(_ size: CGSize) -> CGSize { 
     return CGSize(width: UIScreen.main.bounds.size.width, height: 80.0) 
    } 

} 
+3

Похоже, Работа. – kelin

+1

работает с Xcode 8.3.2, iOS 10, iPhone6 ​​ –

+0

Как назвать это расширение? – Hemang

1

Нам нужно изменить высоту панели навигации для каждый раз, когда открывается представление. Введите код на просмотрWillAppear

override func viewWillAppear(_ animated: Bool) { 
    self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: 80) 
} 

мы можем установить ширину как ширину вида и изменить высоту по своему желанию.

-1

Если вы

  • с помощью раскадровки (который вы сказали, вы)
  • с использованием autolayout , и
  • с использованием с ручной добавкой Панель навигации (в качестве оппо sed до одного, предусмотренного навигационным контроллером)

тогда вы можете просто установить ограничение по высоте на панели навигации.

xcode add new constraints dialog

+1

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

+0

Хорошая точка, спасибо. Из первоначального вопроса я взял его как навигационную панель с добавлением вручную, и это было так, что у меня было то, что первоначально привело меня сюда. Поскольку ни один из других ответов не охватывает этот случай, я оставлю это здесь, если он будет полезен, но я добавил пояснения на основе вашего комментария. – CupawnTae

1

Я хотел бы скрыть панель навигации и реализовать пользовательские один самостоятельно. Таким образом, вы можете создать стиль именно так, как хотите.

Существует простой учебник о том, как сделать это: https://www.codeschool.com/blog/2014/11/11/ios-app-creating-custom-nav-bar/

2

Apple, proposes не изменять размеры navigationBar себя, но удалить тень от панели и добавить настраиваемое представление под navigationBar. Это может работать в большинстве случаев. Проверьте образцы Apple.

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