Saya menemukan solusi untuk bilah putih di sini :
Ditetapkan viewport-fit=coverpada <meta>tag viewport , yaitu:
<meta name="viewport" content="initial-scale=1, width=device-width, height=device-height, viewport-fit=cover">
Bilah putih di UIWebView kemudian menghilang:

Solusi untuk menghapus area hitam (disediakan oleh @dpogue dalam komentar di bawah) adalah dengan menggunakan gambar LaunchStoryboard dengan cordova-plugin-splashscreenuntuk menggantikan gambar peluncuran lama, yang digunakan oleh Cordova secara default. Untuk melakukannya, tambahkan yang berikut ini ke platform iOS di config.xml:
<platform name="ios">
<splash src="res/screen/ios/Default@2x~iphone~anyany.png" />
<splash src="res/screen/ios/Default@2x~iphone~comany.png" />
<splash src="res/screen/ios/Default@2x~iphone~comcom.png" />
<splash src="res/screen/ios/Default@3x~iphone~anyany.png" />
<splash src="res/screen/ios/Default@3x~iphone~anycom.png" />
<splash src="res/screen/ios/Default@3x~iphone~comany.png" />
<splash src="res/screen/ios/Default@2x~ipad~anyany.png" />
<splash src="res/screen/ios/Default@2x~ipad~comany.png" />
<!-- more iOS config... -->
</platform>
Kemudian buat gambar dengan dimensi berikut di res/screen/ios(hapus yang sudah ada):
Default@2x~iphone~anyany.png - 1334x1334
Default@2x~iphone~comany.png - 750x1334
Default@2x~iphone~comcom.png - 1334x750
Default@3x~iphone~anyany.png - 2208x2208
Default@3x~iphone~anycom.png - 2208x1242
Default@3x~iphone~comany.png - 1242x2208
Default@2x~ipad~anyany.png - 2732x2732
Default@2x~ipad~comany.png - 1278x2732
Setelah bilah hitam dihapus, ada hal lain yang berbeda tentang iPhone X yang harus diatasi: Bilah status lebih besar dari 20 piksel karena "takik", yang berarti konten apa pun di bagian paling atas dari aplikasi Cordova Anda akan dikaburkan olehnya :

Daripada melakukan hard-coding padding dalam piksel, Anda dapat menangani ini secara otomatis di CSS menggunakan safe-area-inset-*konstanta baru di iOS 11.
Catatan: di iOS 11.0 fungsi untuk menangani konstanta ini dipanggil constant()tetapi di iOS 11.2 Apple menamainya env()( lihat di sini ), oleh karena itu untuk mencakup kedua kasus Anda perlu membebani aturan CSS dengan keduanya dan bergantung pada mekanisme fallback CSS untuk menerapkan yang sesuai:
body{
padding-top: constant(safe-area-inset-top);
padding-top: env(safe-area-inset-top);
}
Hasilnya kemudian seperti yang diinginkan: konten aplikasi menutupi layar penuh, tetapi tidak dikaburkan oleh "takik":

Saya telah membuat proyek uji Cordova yang menggambarkan langkah-langkah di atas: webview-test.zip
Catatan:
Tombol footer
- Jika aplikasi Anda memiliki tombol footer (seperti milik saya), Anda juga perlu menerapkannya
safe-area-inset-bottomagar tidak tumpang tindih dengan tombol Home virtual di iPhone X.
- Dalam kasus saya, saya tidak dapat menerapkan ini
<body>karena footer benar-benar diposisikan, jadi saya perlu menerapkannya langsung ke footer:
.toolbar-footer{
margin-bottom: constant(safe-area-inset-bottom);
margin-bottom: env(safe-area-inset-bottom);
}
cordova-plugin-statusbar
- Ukuran bilah status telah berubah di iPhone X, jadi versi lama
cordova-plugin-statusbartampilan salah di iPhone X.
- Mike Hartington telah membuat permintaan tarik ini yang menerapkan perubahan yang diperlukan.
- Ini digabungkan ke dalam
cordova-plugin-statusbar@2.3.0rilis, jadi pastikan Anda menggunakan setidaknya versi ini untuk diterapkan ke safe-area-insets
splashscreen
- Batasan storyboard LaunchScreen berubah pada iOS 11 / iPhone X, yang berarti splashscreen tampak "melompat" saat diluncurkan ketika menggunakan versi plugin yang ada ( lihat di sini ).
- Ini ditangkap dalam laporan bug CB-13505 , memperbaiki PR cordova-ios # 354 dan dirilis
cordova-ios@4.5.4, jadi pastikan Anda menggunakan versi cordova-iosplatform terbaru.
orientasi perangkat
- Saat menggunakan UIWebView di iOS 11.0, memutar dari potret> lanskap> potret menyebabkan
safe-area-insettidak diterapkan kembali, menyebabkan konten dikaburkan oleh takik lagi (seperti yang disorot oleh jms dalam komentar di bawah).
- Juga terjadi jika aplikasi diluncurkan dalam lanskap lalu diputar ke potret
- Ini tidak terjadi saat menggunakan WKWebView melalui
cordova-plugin-wkwebview-engine.
- Laporan radar: http://www.openradar.me/radar?id=5035192880201728
- Pembaruan : ini tampaknya telah diperbaiki di iOS 11.1
Sebagai referensi, ini adalah masalah Cordova asli yang saya buka yang menangkap ini: https://issues.apache.org/jira/browse/CB-13273