Saya ingin menghapus bilah status di bagian atas layar.
Ini tidak bekerja:
func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
application.statusBarHidden = true
return true
}
Saya juga sudah mencoba:
func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
var controller = UIViewController()
application.statusBarHidden = true
controller.setNeedsStatusBarAppearanceUpdate()
var view = UIView(frame: CGRectMake(0, 0, 320, 568))
view.backgroundColor = UIColor.redColor()
controller.view = view
var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
label.center = CGPointMake(160, 284)
label.textAlignment = NSTextAlignment.Center
label.text = "Hello World"
controller.view.addSubview(label)
self.window!.rootViewController = controller
self.window!.makeKeyAndVisible()
return true
}
Jawaban:
Anda benar-benar harus mengimplementasikan prefersStatusBarHidden di view controller Anda:
Cepat 3 dan kemudian
sumber
Tambahkan kode, di dalam metode
DIBUAT! Jalankan aplikasi Anda dan tidak ada lagi bilah status!
sumber
Cepat 3
Di
Info.plist
setView controller-based status bar appearance
keNO
Dan telepon
UIApplication.shared.isStatusBarHidden = true
sumber
Jika Anda ingin menyembunyikan dan mengembalikan bilah status pada ketuk tombol , sementara pada saat menyajikan dan menolak menu slide-in , popup dll, maka Anda dapat menggunakan metode ini: -
Untuk menyembunyikan bilah status: -
Untuk mengembalikan bilah status: -
sumber
prefersStatusBarHidden
properti seperti apa yang telah disebutkan.prefersStatusBarHidden
adalah bahwa pandangan terkait dengan bilah status menggunakan kendala, dan juga bilah navigasi, akan bergerak dengan cara yang buruk jika Anda mengaktifkan / menonaktifkan bilah status menggunakanprefersStatusBarHidden
. Untuk saat ini tampaknya hanya jawaban ini yang bisa mengatasi itu.prefersStatusBarHidden
akan mengacaukan kendala Anda. Sejauh ini berhasil. Namun saya menggunakan pembungkus kecil untuk menghindari penggunaan lajang, Anda dapat menemukannya di sinijika Anda lebih suka pendekatan visual daripada mengkodekannya gunakan metode ini: di
info.plist
cukup tambahkan
View controller-based status bar appearance
keNO
dan
Status bar is initially hidden
sebagaiYES
sumber
sumber
Pembaruan untuk iOS 10 / Swift 3.0
Tidak lagi berfungsi, sekarang menjadi properti ...
sumber
get { }
jika Anda tidak punyaset
, cukup tulisreturn true
dalam Swift 3.x:
sumber
Buka Info.plist Anda dan tambahkan dua Kunci:
sumber
Jadi masalah di sini sebenarnya tidak ada hubungannya dengan Swift tetapi hanya bagaimana penampilan status bar ditangani pada iOS 7.
Secara Default, lihat pengontrol yang mengontrol tampilan bilah status secara terpisah saat ditampilkan di layar. Jika Anda ingin menggunakan metode ini mengendalikan bilah status, Anda dapat mengganti metode berikut untuk pengontrol tampilan apa pun yang ingin Anda ubah tampilan untuk:
prefersStatusBarHidden
,preferredStatusBarStyle
,preferredStatusBarAnimation
,Dalam kasus Anda, Anda hanya perlu menerapkan
prefersStatusBarHidden
dan kembalitrue
.Cara lain adalah dengan mengontrol tampilan bilah status di tingkat aplikasi. Ini sepertinya adalah apa yang sebenarnya Anda coba lakukan (dengan menetapkan
application.statusBarHidden
).Untuk membuat ini berfungsi, Anda perlu membuka
Info.plist
file aplikasi Anda dan menambahkan kunciUIViewControllerBasedStatusBarAppearance
, dan memberikan nilaiNO
.sumber
Saya sendiri yang sebenarnya tahu ini. Saya akan menambahkan solusi saya sebagai opsi lain.
sumber
Oke, jadi ini menjadi masalah bagi saya karena iOS 9 tidak mendukung metode di atas yang telah disebutkan orang di sini seperti
UIApplication.sharedApplication().statusBarHidden = true
ataudan
berfungsi tetapi tidak memberikan solusi yang dapat diprogram di mana saya dapat berubah dengan syarat. (
statusBarHidden = true
danstatusBarHidden = false
seperti yang telah kami lakukan sebelumnya).Solusi untuk kegilaan ini:
Dengan menambahkan
prefersStatusBarHidden()
seperti di bawah ini, Anda dapat secara terprogram mengontrol menyembunyikan dan menampilkan bilah status tanpa menambahkanUIViewControllerBasedStatusBarAppearance
pengaturan ke info Anda. Daftar :kemudian gunakan seperti ini di seluruh kode Anda:
ATAU
sumber
prefersStatusBarHidden
menelepon itu masuk akal? Saya kira maksud Andaself.setNeedsStatusBarAppearanceUpdate()
setelahshowStatusBar
penugasanHanya untuk menambahkan, ketika mengganti
prefersStatusBarHidden
metode atau variabel,View controller-based status bar appearance
di Info.plist harus YA, jika tidak maka pengesampingan tidak akan berpengaruhsumber
di Swift 4.2 ini adalah properti sekarang.
sumber
Dalam kasus saya, saya mencari bilah status untuk disembunyikan / ditampilkan sesuai permintaan; bukannya hanya ketika tampilan dimuat atau menghilang.
cepat 3.x
sumber
Swift 5: Di pengontrol tampilan utama, atau pengontrol navigasi utama jika Anda punya,
Dan "Lihat tampilan status berbasis pengontrol" di plist harus YA, jika tidak kode di atas tidak akan dipanggil.
Jika Anda ingin menyembunyikan bilah status saat meluncurkan aplikasi, "Bilah status pada awalnya disembunyikan" di daftar harus YA. Ini dapat mencegah gambar peluncuran terdistorsi ketika bilah biru ekstra muncul di bagian atas layar.
sumber
Solusi yang bekerja untuk saya; jika Anda ingin menyembunyikan bilah status pada pengontrol tampilan tertentu saat memuat:
Perhatian: jika Anda mengatur kunci " Lihat tampilan bilah status berbasis pengontrol " menjadi " TIDAK " di info Anda. Daftar kode di atas tidak berfungsi. Anda harus mengatur kunci ke " YA " atau menghapusnya dari info.plist
sumber
Dalam proyek Anda Umum-> Info Penerapan-> Gaya bilah status pilih tanda centang Sembunyikan bilah status Catatan: - menyembunyikan bilah status di seluruh aplikasi
sumber
Untuk Swift 4+ coba kode berikut (diuji pada Swift 4.0, 4.1 - IOS 10, 11):
sumber
Swift 5+
Dalam kasus saya, saya perlu memperbarui bilah status yang disembunyikan berdasarkan beberapa kondisi.
Karena itu, saya membuat pengendali basis
BaseViewController
yang berisi properti baruhideStatusBar
.Pengontrol tampilan lainnya adalah sub-kelas dari pengontrol dasar ini. Akhirnya ketika saya ingin memperbarui perilaku bilah status, saya hanya perlu mengubah
hideStatusBar
nilai ini .Cara Penggunaan
Demo
Ini demo, saya menggunakan
UIView.animate(...)
untuk membuat transisi lebih mulus.sumber
Saya menggunakan Xcode 8.1 (8B62) dengan target penyebaran yang ditetapkan ke 10.1 dan saya tidak terlalu beruntung dengan opsi penggantian yang disebutkan di atas. Namun memeriksa opsi "Sembunyikan bilah status" di Info Penerapan melakukan trik untuk saya.
Proyek> Umum
Saya harap ini membantu.
sumber
Jika Anda menghadirkan pengontrol tampilan secara modal, coba
sumber
sumber
Anda dapat menggunakan kode ini di
ViewController
Class
scope
sumber
Dalam Proyek Anda-> Umum-> Info penerapan
Gaya Statusbar: -
baru saja ditandai Sembunyikan bilah status (iOS 10)
sumber
Cepat 4
sumber
Diperbarui untuk iOS 13 dan Swift 5
Jika tidak ada jawaban di atas yang berfungsi untuk Anda. Periksa daftar Anda untuk melihat apakah Anda memiliki ini:
"Lihat tampilan bilah status berbasis pengontrol"
Jika demikian, pastikan untuk mengaturnya ke YA !!!!!
Kemudian kode berikut akan berfungsi.
sumber