[UIApplication sharedApplication].statusBarFrame.size.height
. Tetapi karena semua ukuran dalam titik, bukan dalam piksel, tinggi bilah status selalu sama dengan 20.
Memperbarui. Melihat jawaban ini dianggap membantu, saya harus menguraikan.
Tinggi bilah status, memang, sama dengan 20.0f poin kecuali kasus berikut:
- status bar telah disembunyikan dengan
setStatusBarHidden:withAnimation:
metode dan tingginya sama dengan 0,0f poin;
- seperti yang ditunjukkan @Anton di sini, selama panggilan masuk di luar aplikasi Telepon atau selama bilah status sesi perekaman suara sama dengan 40.0f poin.
Ada juga kotak status yang memengaruhi ketinggian tampilan Anda. Biasanya, ketinggian tampilan sama dengan dimensi layar untuk orientasi yang diberikan dikurangi ketinggian bilah status. Namun, jika Anda menghidupkan bilah status (tampilkan atau sembunyikan) setelah tampilan ditampilkan, bilah status akan mengubah bingkainya, tetapi tampilan tidak akan , Anda harus mengubah ukuran tampilan secara manual setelah animasi bilah status (atau selama animasi sejak tinggi bilah status ditetapkan ke nilai akhir pada awal animasi).
Pembaruan 2. Ada juga kasus orientasi antarmuka pengguna. Bilah status tidak menghormati nilai orientasi, sehingga nilai tinggi bilah status untuk mode potret adalah [UIApplication sharedApplication].statusBarFrame.size.height
(ya, orientasi default selalu tegak, tidak peduli apa yang dikatakan oleh aplikasi Anda.), Untuk lansekap - [UIApplication sharedApplication].statusBarFrame.size.width
. Untuk menentukan orientasi UI saat ini ketika di luar UIViewController
dan self.interfaceOrientation
tidak tersedia, gunakan [UIApplication sharedApplication].statusBarOrientation
.
Perbarui untuk iOS7. Meskipun gaya visual status bar berubah, masih ada di sana, bingkainya tetap berperilaku sama. Satu-satunya yang menarik menemukan status bar aku - aku share: Anda UINavigationBar
's ubin latar belakang juga akan ubin status bar, sehingga Anda dapat mencapai beberapa efek desain yang menarik atau hanya warna status bar Anda. Ini juga tidak akan memengaruhi ketinggian bilah status dengan cara apa pun.
Pergi dengan saran Martin untuk pertanyaan: Dapatkan Status iPhone Bar Tinggi .
Dan di Swift
Sepertinya ini adalah retasan, tetapi sebenarnya cukup solid. Bagaimanapun, itu satu-satunya solusi yang berfungsi.
Jawaban Lama
Kode berikut, yang akan masuk dalam subkelas kustom Anda
UIViewController
, hampir berfungsi untuk mendukung lansekap. Tapi, saya perhatikan kasing sudut (ketika berputar dari kanan> terbalik terbalik> kiri) yang tidak berfungsi (beralih tinggi & lebar).sumber
statusBarFrame
dikembalikan sebagai nilai sebelum transformasi.var statusBarHeight: CGFloat
Coba ini:
sumber
Swift 3 atau Swift 4:
sumber
Sementara bilah status biasanya 20pt tinggi, itu bisa dua kali lipatnya dalam beberapa situasi:
Coba saja, dan Anda akan melihatnya sendiri. Hardcoding ketinggian ke 20pt biasanya akan berfungsi, sampai tidak.
Jadi saya menjawab kedua H2CO3:
sumber
EDIT Cara iOS 11 untuk mengetahui di mana menempatkan bagian atas konten tampilan Anda adalah
safeAreaLayoutGuide
See UIView's Documentation .JAWABAN YANG TERJUTAN Jika Anda menargetkan iOS 7+, Dokumentasi untuk UIViewController menyarankan agar
topLayoutGuide
properti viewController memberi Anda bagian bawah bilah status, atau bagian bawah bilah navigasi, jika itu juga terlihat. Itu mungkin berguna, dan tentu saja lebih sedikit peretasan dibandingkan banyak solusi sebelumnya.sumber
Jangan lupa bahwa bingkai bilah status akan berada di ruang koordinat layar! Jika Anda meluncurkan dalam mode lansekap, Anda mungkin menemukan bahwa lebar dan tinggi ditukar. Saya sangat menyarankan Anda menggunakan versi kode ini jika Anda mendukung orientasi lanskap:
Anda kemudian dapat membaca properti tinggi statusBarFrame secara langsung. 'Tampilan' dalam contoh ini haruslah tampilan di mana Anda ingin menggunakan pengukuran, kemungkinan besar pengendali tampilan root jendela aplikasi.
Secara kebetulan, bilah status tidak hanya lebih tinggi selama panggilan telepon, bilah status juga dapat menjadi nol jika bilah status disembunyikan dengan sengaja.
sumber
Berikut adalah cara cepat untuk mendapatkan tinggi bilah status layar:
Ini termasuk sebagai fungsi standar dalam proyek saya: https://github.com/goktugyil/EZSwiftExtensions
sumber
Untuk iOS 13 Anda dapat menggunakan:
sumber
sumber
Secara default, tinggi Status Bar di iOS adalah
20 pt
.Info lebih lanjut: http://www.idev101.com/code/User_Interface/sizes.html
sumber
Saya baru saja menemukan cara yang memungkinkan Anda tidak secara langsung mengakses ketinggian bilah status, tetapi menghitungnya.
Tinggi Bilah Navigasi - panjang topLayoutGuide = tinggi status bar
Cepat:
self.topLayoutGuide.length
adalah area teratas yang dicakup oleh bilah tembus cahaya, danself.navigationController?.navigationBar.frame.height
merupakan bilah tembus cahaya yang tidak termasuk bilah status, yang biasanya 44pt. Jadi dengan menggunakan metode ini Anda dapat dengan mudah menghitung ketinggian bilah status tanpa khawatir tentang perubahan tinggi bilah status karena panggilan telepon.sumber
self.topLayoutGuide.length
adalah 0 sehingga hasilnya menjadi -44.Cepat 5
UIApplication. Shared.statusBarFrame.height
sumber
Dengan menggunakan kode baris tunggal berikut, Anda dapat memperoleh ketinggian bilah status dalam orientasi apa pun dan juga jika terlihat atau tidak
Ini hanya makro yang sederhana namun sangat berguna coba saja ini Anda tidak perlu menulis kode tambahan
sumber