Baru-baru ini saya bertanya-tanya tentang fakta bahwa aplikasi iOS hanya memiliki satu UIWindow
. Tampaknya tidak menjadi masalah untuk membuat yang lain UIWindow
dan meletakkannya di layar.
Pertanyaan saya agak kabur, tapi saya tertarik pada:
- Apa yang berpotensi saya capai dengan satu detik
UIWindow
yang tidak dapat dilakukan dengan cara lain? - Apa yang salah saat menggunakan banyak
UIWindow
contoh? - Saya telah melihat bahwa orang menggunakan detik
UIWindow
untuk menampilkan popover seperti tampilan di iPhone. Apakah ini cara yang baik untuk melakukannya? Mengapa? Kenapa tidak? - Apakah ada contoh lain di mana sangat masuk akal untuk memiliki yang lain
UIWindow
?
Bukannya aku melewatkan sesuatu. Saya tidak pernah merasa perlu untuk membuat UIWindow
contoh lain tetapi mungkin itu akan memungkinkan melakukan hal-hal luar biasa yang tidak saya sadari! :-)
Saya berharap ini dapat membantu saya memecahkan masalah ini: Saya perlu menambahkan "tampilan sampul" pada apa pun yang sedang ditampilkan. Ini juga harus berfungsi jika sudah ada satu atau lebih pengontrol modal yang disajikan. Jika saya menambahkan a UIView
ke tampilan pengontrol root, pengontrol modal duduk di atas, begitu juga pengontrol popover. Jika saya menampilkan tampilan sampul secara sederhana dan sudah ada pengontrol modal, hanya sebagian dari layar yang tertutup.
sumber
Jawaban:
A
UIWindow
dapat melayang di atas elemen UI lainnya seperti keyboard sistem.Untuk mengatasi paragraf terakhir Anda: Buatlah
UIWindow
dengan bingkai yang sama dengan jendela utama Anda. SetelwindowLevel
propertinya keUIWindowLevelStatusBar
. Setelhidden
propertinya keNO
.sumber
Dimulai dengan jawaban Rob, saya bermain-main sedikit dan ingin menuliskan beberapa catatan untuk orang lain yang mencoba mendapatkan informasi tentang topik ini:
UIWindow
. Buat saja satu danmakeKeyAndVisible
. Selesai.UIWindow
mencakup semuanya, bahkan modal, popovers, dll. Brilian!UIWindow
selalu potret secara implisit. Itu tidak berputar. Anda harus menambahkan pengontrol sebagai pengontrol root jendela baru dan membiarkannya menangani rotasi. (Sama seperti jendela utama)UIWindowLevelStatusBar
mencakup semuanya. Sethidden
propertinya ke NO.UIWindow
dapat digunakan untuk menghadirkan tampilan di layar yang melayang di atas segalanya. Tanpa membuat pengontrol tiruan hanya untuk menyematkannya di fileUIPopoverController
.sumber
Berikut adalah Dokumentasi Apple untuk pemahaman yang lebih baik tentang UIWindow: https://developer.apple.com/library/archive/documentation/WindowsViews/Conceptual/WindowAndScreenGuide/WindowScreenRolesinApp/WindowScreenRolesinApp.html
Salah satu alasan yang bagus meskipun spesifik untuk menggunakan beberapa contoh UIWindow adalah ketika Anda perlu merekam video layar aplikasi. Anda mungkin tidak ingin memasukkan elemen tertentu (tombol perekaman, status perekaman, dll.) Dalam rekaman video akhir, sehingga Anda dapat meletakkan elemen-elemen tersebut di UIWindow terpisah di atas.
Faktanya, jika Anda menggunakan ReplayKit, Anda harus menggunakan UIWindow terpisah untuk elemen UI yang dikecualikan ini. Info lebih lanjut di sini: https://medium.com/ar-tips-and-tricks/how-to-record-a-screen-capture-with-replaykit-whilst-hiding-the-hud-element-bedcca8e31e
sumber