Это не то, что может вписаться в несколько строк кода, но это один подход, который может работать для вас.
Чтобы скрыть панель навигации:
[[self navigationController] setNavigationBarHidden:YES animated:YES];
Чтобы показать это:
[[self navigationController] setNavigationBarHidden:NO animated:YES];
Документация по этому методу доступна здесь .
Чтобы прослушать «двойной щелчок» или двойное касание, UIView
создайте подкласс и сделайте экземпляр этого подкласса view
свойством контроллера представления .
В подклассе представления переопределите его -touchesEnded:withEvent:
метод и посчитайте, сколько касаний вы получаете за промежуток времени, измеряя время между двумя последовательными касаниями, возможно, с помощью CACurrentMediaTime()
. Или проверить результат от [touch tapCount]
.
Если вы получили два касания, ваше подклассное представление выдает, NSNotification
что ваш контроллер представления зарегистрирован для прослушивания.
Когда ваш контроллер представления слышит уведомление, он запускает селектор, который либо скрывает, либо отображает панель навигации с использованием вышеупомянутого кода, в зависимости от текущего состояния видимой панели навигации, доступ к которому осуществляется посредством чтения isHidden
свойства панели навигации .
РЕДАКТИРОВАТЬ
Часть моего ответа для обработки событий касания, вероятно, полезна еще до iOS 3.1. UIGestureRecognizer
Класс, вероятно, лучше всего подходит для обработки двойных нажатий, в эти дни.
РЕДАКТИРОВАТЬ 2
Swift способ скрыть панель навигации:
navigationController?.setNavigationBarHidden(true, animated: true)
Чтобы показать это:
navigationController?.setNavigationBarHidden(false, animated: true)
Этот код поможет вам.
источник
Сначала прочтите раздел в Руководстве по программированию View Controller для iOS о «Принятии полноэкранного макета для представлений навигации» и раздел о том же для пользовательских представлений. Если вы пытаетесь сделать что-то вроде Photos.app, то вы, вероятно, используете представление с прокруткой. Обратите внимание на комментарий о том, что панели навигации автоматически добавляют вставку содержимого прокрутки в представление прокрутки, чтобы учесть высоту панели навигации (и строки состояния), поэтому необходимо сбросить свойство contentInset представления прокрутки обратно в ноль (UIEdgeInsetsZero) сразу после установка начального состояния панели навигации и до появления представления.
Затем, если у вас есть одно нажатие, которое переключает навигационную панель и / или строку состояния для отображения или скрытия, вам нужно сделать две вещи в вашем методе переключения. Первым кажется сохранить свойство contentOffset представления прокрутки перед изменением скрытого свойства NavigationBar и сразу после этого восстановить сохраненное значение в contentOffset. И затем, чтобы снова обнулить свойство contentInset до UIEdgeInsetsZero после изменения свойства navigationBarHidden. Кроме того, если вы переключаете строку состояния, вам необходимо изменить ее состояние перед изменением состояния панели навигации.
источник
В Swift попробуйте это,
или
источник
Чтобы скрыть панель навигации:
Чтобы показать панель навигации:
источник
Вот очень быстрое и простое решение:
Это будет работать одним нажатием вместо двойного нажатия. Также это изменит поведение для контроллера навигации даже после нажатия или выталкивания текущего контроллера представления.
Вы всегда можете изменить это поведение в вашем контроллере в пределах viewWillAppear: и viewWillDisappear: действия, если вы хотите установить поведение только для одного контроллера представления.
Вот документация :
источник
Одним из способов может быть снятие флажка Видимость панели «Показывает панель навигации» в Инспекторе атрибутов. Надеюсь, это кому-нибудь поможет.
источник
В Swift 4.2 и Xcode 10
Если вы не хотите отображать панель навигации только в 1-ом ВК, но хотите отображать во втором словаре ВК
В вашем 1-м VC напишите этот код.
источник
источник
hidesBarsOnTap
на свойство UINavigationController выходить для обработки только это с iOS8 SDKhttps://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UINavigationController_Class/#//apple_ref/occ/instp/UINavigationController/hidesBarsOnTap
источник
SWIFT CODE: полностью работает для iOS 3.2 и новее.
затем написать
источник