Ini bukan sesuatu yang bisa masuk ke dalam beberapa baris kode, tetapi ini adalah salah satu pendekatan yang mungkin cocok untuk Anda.
Untuk menyembunyikan bilah navigasi:
[[self navigationController] setNavigationBarHidden:YES animated:YES];
Untuk menunjukkannya:
[[self navigationController] setNavigationBarHidden:NO animated:YES];
Dokumentasi untuk metode ini tersedia di sini .
Untuk mendengarkan "klik dua kali" atau ketuk dua kali, subkelas UIView
dan buat instance dari subkelas tersebut view
milik pengontrol tampilan Anda .
Dalam tampilan subkelas, timpa -touchesEnded:withEvent:
metodenya dan hitung berapa banyak sentuhan yang Anda dapatkan dalam durasi waktu, dengan mengukur waktu antara dua ketukan berturut-turut, mungkin dengan CACurrentMediaTime()
. Atau uji hasilnya dari [touch tapCount]
.
Jika Anda mendapatkan dua ketukan, tampilan subkelas Anda mengeluarkan masalah NSNotification
yang didengarkan pengontrol tampilan Anda.
Ketika pengontrol tampilan Anda mendengar notifikasi, ia akan memancarkan pemilih yang menyembunyikan atau menampilkan bilah navigasi menggunakan kode yang disebutkan di atas, tergantung pada keadaan yang terlihat saat ini di bilah navigasi, diakses melalui membaca isHidden
properti bilah navigasi .
EDIT
Bagian dari jawaban saya untuk menangani acara tap mungkin berguna kembali sebelum iOS 3.1. The UIGestureRecognizer
kelas mungkin pendekatan yang lebih baik untuk menangani double-tap, hari ini.
EDIT 2
Cara Swift untuk menyembunyikan bilah navigasi adalah:
navigationController?.setNavigationBarHidden(true, animated: true)
Untuk menunjukkannya:
navigationController?.setNavigationBarHidden(false, animated: true)
Kode ini akan membantu Anda.
sumber
Pertama baca bagian dalam Panduan Pemrograman Tampilan Kontroler untuk iOS tentang 'Mengadopsi Tata Letak Layar Penuh untuk Tampilan Navigasi' dan bagian tentang hal yang sama untuk Tampilan Kustom. Jika Anda mencoba melakukan sesuatu seperti Photos.app maka Anda mungkin menggunakan tampilan gulir. Perhatikan komentar bahwa bilah Navigasi secara otomatis menambahkan inset konten gulir ke tampilan gulir ke akun untuk ketinggian bilah navigasi (dan bilah status) sehingga Anda harus mengatur ulang properti contentInset dari tampilan gulir Anda kembali ke nol (UIEdgeInsetsZero) segera setelah mengatur keadaan awal navigasiBar dan sebelum tampilan muncul.
Kemudian jika Anda memiliki satu ketukan yang mengaktifkan bilah navigasi dan / atau bilah status untuk ditampilkan atau disembunyikan, Anda perlu melakukan dua hal di dalam metode toggling. Yang pertama tampaknya menyimpan properti viewOffset tampilan gulir sebelum mengubah properti tersembunyi NavigationBar dan mengembalikan nilai Anda yang disimpan ke contentOffset segera sesudahnya. Dan yang kedua lagi nolkan properti contentInset ke UIEdgeInsetsZero setelah mengubah properti navigationBarHidden. Juga, jika Anda mengaktifkan bilah status, Anda perlu mengubah statusnya sebelum Anda mengubah status navigationBar.
sumber
Di Swift coba ini,
atau
sumber
Untuk menyembunyikan bilah Navigasi:
Untuk menampilkan bilah Navigasi:
sumber
Inilah solusi yang sangat cepat dan sederhana:
Ini akan bekerja pada satu ketukan alih-alih ketuk dua kali. Juga akan mengubah perilaku pengontrol navigasi bahkan setelah mendorong atau membuka pengontrol tampilan saat ini.
Anda selalu dapat mengubah perilaku ini di controller Anda dalam viewWillAppear: dan viewWillDisappear: tindakan jika Anda ingin mengatur perilaku hanya untuk controller tampilan tunggal.
Berikut dokumentasinya :
sumber
Salah satu caranya bisa dengan menghapus centang pada Visibilitas Bar "Shows Navigation Bar" Di Atribut Inspektur. Tolong ini membantu seseorang.
sumber
Di Swift 4.2 dan Xcode 10
Jika Anda tidak ingin menampilkan bilah Navigasi hanya di 1 VC, tetapi Anda ingin ditampilkan di 2 VC onword's
Di VC 1 Anda, tulis kode ini.
sumber
sumber
hidesBarsOnTap
pada properti UINavigationController keluar untuk menangani hal ini hanya dengan iOS8 SDKhttps://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UINavigationController_Class/#//apple_ref/occ/instp/UINavigationController/hidesBarsOnTap
sumber
KODE SWIFT: Ini berfungsi sepenuhnya untuk iOS 3.2 dan yang lebih baru.
lalu menulis
sumber