Di file .plist saya, saya telah menyetel " Tampilan bilah status berbasis pengontrol " ke NO
. Tapi setelah itu UIImagePickerController
, aplikasi saya berperilaku seolah-olah opsi disetel ke YES
.
Di aplikasi saya, saya menyajikan VC yang menampilkan file UIImagePickerController
.
Masalahnya terjadi seperti ini:
- Setelah pemilih foto ditampilkan, saat perpustakaan foto dipilih, warna teks bilah status berubah.
- Kemudian setelah,
UIImagePickerController
diberhentikan, perubahan jarak bilah status untuk sisa aplikasi saya dan semua bilah navigasi untuk pengontrol lain ditampilkan di bawah bilah status.
Apakah ada cara untuk mengatasi ini tanpa mengelola bilah status di pengontrol tampilan saya?
Jawaban:
Tidak ada solusi di atas yang berhasil untuk saya, tetapi dengan menggabungkan jawaban Rich86man dan iOS_DEV_09, saya mendapatkan solusi yang berfungsi secara konsisten:
dan
Mengenai solusi luar biasa ini. Untuk 2014 / iOS8 saya menemukan dalam beberapa kasus Anda perlu JUGA menyertakan
prefersStatusBarHidden
dan, mungkin,childViewControllerForStatusBarHidden
Jadi ...Semoga bisa membantu seseorang
sumber
Saya menghadapi masalah yang sama hari ini. Inilah solusi saya.
Di pengontrol tampilan yang memanggil pemilih gambar, tetapkan diri Anda sebagai delegasi Pemilih gambar. (Anda mungkin sudah melakukan ini)
Karena UIImagePickerController adalah jenis pengontrol Navigasi, Anda juga menyetel diri sendiri sebagai delegasi UINavigationController. Kemudian :
Ganti UIStatusBarStyleLightContent dengan gaya apa pun yang Anda cari.
sumber
Jawaban yang diterima akan berfungsi jika Anda menyetel 'Lihat tampilan bilah status berbasis pengontrol' ke NO di file .plist Anda. Jika memang Anda perlu mengontrol bilah status di beberapa pengontrol tampilan lain dan menyetel opsi ini ke YA, cara lain untuk membuat UIImagePickerController berperilaku benar adalah dengan membuat subkelasnya
sumber
saya menghadapi masalah yang sama.
inilah solusi saya. letakkan ini di viewWillAppear dari pengontrol tampilan tempat Anda membuka tampilan pemilih gambar
sumber
Bisakah kamu mencobanya. Saya pikir needsStatusBarApperanceUpdate akan berfungsi.
sumber
Saya menemukan ini untuk menawarkan penanganan yang tepat, ada dua bagian.
UIImagePickerController sendiri menyajikan pengontrol tampilan, jadi delegasi ini berfungsi untuk semua penyaji di tumpukan.
viewWillAppear memastikan pengontrol tampilan ini sendiri selalu disetel ulang setiap kali pengontrol tampilan yang ditampilkan menutup di atasnya.
sumber
Saya memiliki masalah yang sama. Tambahkan info plist: "Lihat tampilan bilah status berbasis pengontrol" dengan nilai "NO"
Contoh di sini https://stackoverflow.com/a/19211669
Solusi ini berhasil untuk saya.
sumber
Ini mungkin bug. Saya memecahkan masalah dengan menyetel "Lihat tampilan bilah status berbasis pengontrol" disetel ke YA dan di setiap pengontrol tampilan menempelkan kode berikut:
Kemudian aplikasi saya berperilaku seperti yang diharapkan.
sumber
Untuk menyembunyikan bilah status di UIImagePicker:
-
dan ketika UIImagePicker ditutup untuk menyembunyikan bilah status di pengontrol Tampilan, gunakan kode berikut:
sumber
coba ini ....
ini akan berfungsi di kedua kasus, yaitu apakah Anda menggunakan presentModalViewController dan pushViewController
mendelegasikan metode
sumber
Semua hal di atas tidak berhasil untuk saya. Saya memecahkan masalah dengan mengubah gaya presentasi menjadi:
sumber
Tidak ada solusi di atas yang berhasil untuk saya.
Saya menyajikan UIImagePickerController sebagai pengontrol tampilan modal. Setelah menutup UIImagePickerController, status bilahnya adalah:
Solusi yang memperbaiki masalah saya adalah memulihkan statusBarOrientation setelah menutup UIImagePickerController:
sumber
Kode ini membantu saya menyesuaikan gaya bilah status.
EDIT: solusi ini berfungsi jika "Lihat tampilan bilah status berbasis pengontrol" == YA
sumber
Semua jawaban di atas ok dan bisa membantu.
Saya memiliki masalah yang sama karena harus mengelola aplikasi yang dijalankan di bawah versi iOS yang berbeda .
Kemudian, di delegasikan:
sumber
Namun solusi lain yang mungkin berhasil dalam beberapa situasi.
sumber
Sudahkah Anda mencoba menelepon
[self setNeedsStatusBarAppearanceUpdate]
saat pengontrol tampilan presentasi Anda muncul kembali?sumber
Saya mencoba menyembunyikan bilah status di UIImagePickerController di iOS7, tetapi saya masih tidak tahu bagaimana melakukan ini. saya menggunakan
di ViewController yang memanggil UIImagePickerController, dan setel "Lihat tampilan bilah status berbasis pengontrol = NO" di file plist. Semoga ini bisa membantu.
sumber
coba ini :
dan dalam implementasi protokol, gunakan ini:
sumber
Ini menyelesaikannya untuk saya ...:
sumber
Tidak ada di sini yang secara khusus memperbaiki masalah yang saya alami (dan mungkin OP juga mengalami), jadi saya pikir saya akan membagikan jawaban saya. Alih-alih menyembunyikan bilah status yang menurut saya merupakan solusi buggy (saya perhatikan bahwa kadang-kadang akan meninggalkan aplikasi saya dalam keadaan di mana bilah status disembunyikan ketika seharusnya tidak). Saya malah memilih untuk mencoba dan bermain bagus dengan
UIStatusBarStyles
.Ketika UIImagePickerController memiliki tampilan yang disajikan, saya mengatur gaya bilah status ke default karena warna latar belakang default adalah abu-abu terang.
Kemudian, saat pemilih gambar ditutup, saya menyetelnya kembali ke
UIStatusBarStyleLightContent
.sumber
Dalam hal ini, Kami menggunakan 2 langkah
Pada langkah pertama: Tambahkan info.plist: "Lihat tampilan bilah status berbasis pengontrol" dengan nilai "NO"
Pada langkah kedua: Gunakan / panggil kode ini dengan delegasi UIImagePickerController
Dalam kasus IOS-7 tambahkan Satu Fungsi lagi
sumber
Pada iOS 8.1, sepertinya mereka akhirnya memperbaiki bug ini! Saya dapat menghapus semua solusi yang saya gunakan dari kode saya.
sumber
Menggunakan perilaku iOS 8 default, saya mengalami masalah dengan bilah status yang muncul saat saya ingin menyembunyikannya.
Solusi yang saya temukan adalah, langsung setelah memanggil
presentPopover
dari pengontrol tampilan saya, saya lakukan:Saya juga harus menambahkan ini ke pengontrol tampilan utama saya:
sumber
Jadi saya mengalami masalah ini dan saya dapat menyelesaikannya hanya dengan menerapkan satu fungsi delegasi. Latar belakang bilah status saya berwarna hitam, sehingga UIStatusBarStyle untuk aplikasi saya adalah .LightContent. Ketika saya mempresentasikan UIImagePickerController untuk memilih foto dari penyimpanan perangkat, bilah status baik-baik saja. Namun, saat mengklik ke direktori seperti "Rol Kamera" atau "Favorit," secara efektif mendorong ke tumpukan navigasi, bilah status menghilang. Saat memilih foto, tidak ada bilah status sama sekali; setelah menutup pengontrol tampilan modal lainnya, hanya baterai yang ada, yang menunjukkan bahwa bilah status lainnya mungkin juga hitam.
Saya mencoba beberapa solusi lain seperti memperluas UIImagePickerController, tetapi di Swift, Anda tidak dapat mengganti menggunakan ekstensi. Saya kemudian mencoba membuat subkelas UIImagePickerController dan mencoba menyembunyikan bilah statusnya di viewWillAppear () dan memperlihatkan bilah status di viewWillDisappear. Saya dapat melihat bilah status disembunyikan dengan animasi .Slide, tetapi karena bilah status tidak terlihat saat memilih direktori, saya tidak dapat melihat bilah status ditampilkan. Sekali lagi, baterai hijau kembali dengan sisa bilah status tidak terlihat setelah menutup pengontrol tampilan modal. Saya juga mencoba mengganti prefersStatusBarHidden (), tetapi fungsi itu tidak pernah dipanggil, jadi saya mencoba memanggil setNeedsStatusBarAppearanceUpdate () untuk memastikan bahwa prefersStatusBarHidden () dipanggil oleh sistem, tetapi masih tidak dipanggil. Juga, ada saran untuk menyetel bilah status agar disembunyikan pada metode delegasi navigationController willShowViewController. Sekali lagi, yang dilakukan hanyalah menyembunyikan bilah status, yang tidak menyelesaikan masalah. Ternyata, tampaknya gaya bilah status diubah setelah didorong ke tumpukan navigasi UIImagePickerController. Untuk mengatasi masalah sepenuhnya, saya tidak perlu menulis ekstensi atau subclass UIImagePickerController. Yang perlu Anda lakukan hanyalah menyetel delegasi dan menyetel gaya bilah status agar tetap sama. Penambahan ini seolah-olah masalah tidak pernah ada. tampaknya gaya bilah status diubah saat mendorong ke tumpukan navigasi UIImagePickerController. Untuk mengatasi masalah sepenuhnya, saya tidak perlu menulis ekstensi atau subclass UIImagePickerController. Yang perlu Anda lakukan hanyalah menyetel delegasi dan menyetel gaya bilah status agar tetap sama. Penambahan ini seolah-olah masalah tidak pernah ada. tampaknya gaya bilah status diubah saat mendorong ke tumpukan navigasi UIImagePickerController. Untuk mengatasi masalah sepenuhnya, saya tidak perlu menulis ekstensi atau subclass UIImagePickerController. Yang perlu Anda lakukan hanyalah menyetel delegasi dan menyetel gaya bilah status agar tetap sama. Penambahan ini seolah-olah masalah tidak pernah ada.
sumber
Saya benar-benar menemukan cara yang lebih baik untuk mengatur warna latar belakang bilah status di Image Picker. Pada dasarnya Anda perlu mengatur backgroundImage dari navigationBar menjadi nil, karena secara default di Image Picker memiliki backgroundImage sebagai Image putih.
sumber