Saya memiliki ViewController
yang ada di dalam a UINavigationcontroller
, tetapi navigationBar tersembunyi. Saat saya menjalankan aplikasi di iOS 7, bilah status muncul di atas tampilan saya. Apakah ada cara untuk menghindari ini?
Saya tidak ingin menulis kode khusus OS apa pun.
Saya mencoba mengatur View controller-based status bar appearance
ke NO
, tetapi tidak memperbaiki masalah.
Jawaban:
Xcode 5
iOS 6/7 Deltas
yang khusus dibuat untuk mengatasi masalah ini. Di storyboard, saya memindahkan tampilan 20 piksel ke bawah agar terlihat tepat di iOS 7 dan untuk membuatnya kompatibel dengan iOS 6, saya mengubahDelta y
ke -20.Sejak storyboard saya tidak menggunakan auto-layout, untuk mengubah ukuran ketinggian pandangan benar pada iOS 6 aku harus mengatur
Delta height
sertaDelta Y
.sumber
Jika Anda sama sekali TIDAK menginginkan bilah status, Anda perlu memperbarui plist Anda dengan data ini: Untuk melakukan ini, di plist, tambahkan 2 pengaturan tersebut:
Di iOS 7, Anda diharapkan mendesain aplikasi Anda dengan mempertimbangkan bilah status transparan yang dilapisi. Lihat aplikasi Cuaca iOS 7 baru sebagai contoh.
sumber
Ini adalah perilaku default untuk
UIViewController
iOS 7. Tampilan akan menjadi layar penuh yang berarti bilah status akan menutupi bagian atas tampilan Anda.Jika Anda memiliki
UIViewController
dalam aUINavigationController
dan navigationBar terlihat, Anda dapat memiliki kode berikut di AndaviewDidLoad
atau memiliki gambar latar belakang untuk navigationBar melakukan trik.Jika Anda menyembunyikan navigationBar, maka Anda harus menyesuaikan semua elemen UIView dengan menggeser 20 poin. Saya tidak melihat solusi lain. Gunakan tata letak otomatis akan sedikit membantu.
Berikut adalah contoh kode untuk mendeteksi versi iOS, jika Anda ingin kompatibilitas ke belakang.
sumber
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
Hanya solusi kerja yang saya buat sendiri.
Ini adalah subclass UIViewController saya https://github.com/comonitos/ios7_overlaping
1 Subclass dari UIViewController
2 Subkelas window.rootViewController Anda dari kelas itu.
3 Voila!
4 Tambahkan ini untuk membuat bilah status Anda putih Tepat setelah [self.window makeKeyAndVisible]; !!!
sumber
Tambahkan Kunci di plist --- Lihat tampilan bilah status berbasis pengontrol: TIDAK
sumber
Untuk menyembunyikan bilah status di ios7 ikuti langkah-langkah sederhana ini:
Dalam "
Resources
" folder Xcode goto dan buka "(app name)-Info.plist file
".View controller based status bar appearance
" kunci dan setel nilainya "NO
"Status bar is initially hidden
" kunci dan setel nilainya "YES
"Jika kunci tidak ada, Anda dapat menambahkannya dengan memilih "
information property list
" di atas dan klik ikon +sumber
Jika Anda ingin menyembunyikannya sepenuhnya dan hanya menghindari berurusan dengannya, ini bekerja dengan baik.
referensi https://stackoverflow.com/a/18873777/1030449
sumber
Jika menggunakan
xib
s, implementasi yang sangat mudah adalah merangkum semua subview di dalam tampilan container dengan flag pengubah ukuran (yang akan Anda gunakan untuk kompatibilitas 3.5 "dan 4") sehingga hierarki tampilan terlihat seperti inidan kemudian
viewDidLoad
, lakukan sesuatu seperti ini:Dengan cara ini, ujung pena tidak perlu dimodifikasi untuk kompatibilitas iOS 7. Jika Anda memiliki latar belakang, itu dapat disimpan di luar
containerView
dan membiarkannya menutupi seluruh layar.sumber
Ini semua yang diperlukan untuk menghapus bilah status.
sumber
Untuk Bilah Navigasi:
Penulisan kode ini:
baru saja melakukan trik untuk saya.
sumber
Jawaban Vincent, edgeForExtendedLayout berhasil untuk saya.
Makro ini membantu dalam menentukan versi os sehingga lebih mudah
tambahkan makro ini ke file prefix.pch dari proyek Anda dan dapat diakses di mana saja
sumber
Saya telah memposting jawaban saya ke posting lain dengan pertanyaan yang sama dengan yang satu ini.
Dari Panduan transisi Apple iOS7, https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/AppearanceCustomization.html#//apple_ref/doc/uid/TP40013174-CH15-SW1
Secara khusus
automaticallyAdjustsScrollViewInsets=YES
danset self.edgesForExtendedLayout = UIRectEdgeNone
bekerja untuk saya ketika saya tidak ingin tumpang tindih dan saya memiliki filetableviewcontroller
.sumber
Jika Anda ingin "Gunakan Autolayout" diaktifkan dengan biaya berapa pun, tempatkan kode berikut di viewdidload.
sumber
Bilah status dan bilah navigasi saya tumpang tindih setelah kembali dari tampilan lanskap YTPlayer. Inilah solusi saya setelah mencoba versi @comonitos tetapi tidak berfungsi di iOS 8 saya
Panggil saja fungsi ini kapan pun Anda ingin memperbaiki posisi bilah navigasi. Saya menghubungi YTPlayerViewDelegate
playerView:didChangeToState:
sumber