私はここで白いバーの解決策を見つけました:
つまりviewport-fit=cover
、ビューポート<meta>
タグに設定します。
<meta name="viewport" content="initial-scale=1, width=device-width, height=device-height, viewport-fit=cover">
UIWebViewの白いバーが消えます。
黒い領域(下記のコメントで@dpogueが提供)を削除するソリューションは、LaunchStoryboardイメージをcordova-plugin-splashscreen
使用して、デフォルトでCordovaによって使用されるレガシー起動イメージを置き換えることです。これを行うには、以下をiOSプラットフォームに追加します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>
次に、次のサイズの画像を作成しますres/screen/ios
(既存の画像は削除してください)。
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
黒いバーが削除されると、iPhone Xで対処する必要のあるもう1つの点が異なります。「ノッチ」があるため、ステータスバーは20ピクセルよりも大きくなります。つまり、コルドバアプリの最上部にあるコンテンツはすべて隠されます。 :
ピクセル単位のパディングをハードコーディングするのではsafe-area-inset-*
なく、iOS 11の新しい定数を使用してCSSでこれを自動的に処理できます。
注: iOS 11.0ではこれらの定数を処理する関数が呼び出されましたconstant()
が、iOS 11.2ではAppleが名前を変更しましたenv()
(ここを参照)。したがって、両方のケースをカバーするには、CSSルールを両方でオーバーロードし、CSSフォールバックメカニズムに依存してCSSを適用する必要があります適切なもの:
body{
padding-top: constant(safe-area-inset-top);
padding-top: env(safe-area-inset-top);
}
結果は希望どおりになります。アプリのコンテンツは全画面をカバーしますが、「ノッチ」によって不明瞭になりません。
上記の手順を示すCordovaテストプロジェクトを作成しました:webview-test.zip
ノート:
フッターボタン
- アプリにフッターボタンがある場合(私のものと同じ)、
safe-area-inset-bottom
iPhone Xの仮想ホームボタンと重複しないように適用する必要もあります。
- 私の場合、
<body>
フッターが完全に配置されているため、これを適用できなかったため、フッターに直接適用する必要がありました。
.toolbar-footer{
margin-bottom: constant(safe-area-inset-bottom);
margin-bottom: env(safe-area-inset-bottom);
}
コルドバプラグインステータスバー
- iPhone Xではステータスバーのサイズが変更されたため、古いバージョンの
cordova-plugin-statusbar
ディスプレイはiPhone Xでは正しく表示されません
- Mike Hartingtonは、必要な変更を適用するこのプルリクエストを作成しました。
- これは
cordova-plugin-statusbar@2.3.0
リリースに統合されたので、safe-area-insetsに適用するために少なくともこのバージョンを使用していることを確認してください
スプラッシュスクリーン
デバイスの向き
- iOS 11.0でUIWebViewを使用する場合、縦向き>横向き>縦向きから回転すると、
safe-area-inset
が再適用されず、コンテンツがノッチによって再び不明瞭になります(以下のコメントのjmsで強調表示されています)。
- アプリが横向きで起動され、縦向きに回転した場合にも発生します
- これは、を介してWKWebViewを使用する場合には起こりません
cordova-plugin-wkwebview-engine
。
- レーダーレポート:http : //www.openradar.me/radar?id=5035192880201728
- 更新:これはiOS 11.1で修正されたようです
参考までに、これは私が開いた元のCordovaの問題で、これをキャプチャしています:https : //issues.apache.org/jira/browse/CB-13273