Xcodeシミュレーターを使用してiPhone Xの動作をテストしています。何らかの奇妙な理由で、ステータスバーを非表示にすると、ナビゲーションバーが上に押し上げられ、タイトルが完全に消え、左右のボタンが切れます。 これはiPhone Xでのみ発生しています。
イラスト:
ステータスバーを非表示にし、ナビゲーションバーを表示位置に保持するにはどうすればよいですか?
UPDATE:
あなたの納得のためのサンプルプロジェクト:
https://drive.google.com/file/d/0B5qJARV-Oc9ra1hvZkpXZm9lRUE/view?usp=sharing
1つの解決策は、安全な領域に適切に制限されたコンテナビューコントローラ内にナビゲーションコントローラを埋め込むことです。
別のView Controllerを作成し、オブジェクトライブラリから「コンテナビュー」をドラッグするだけです。このビューには、安全領域への上部、下部、先頭、および末尾の制約があり、すべて0に等しい定数です。コンテナビューからNavigation ControllerにControlキーを押しながらドラッグすると、「埋め込みセグエ」を設定するオプションが表示されます選択したView Controllerを子View Controllerとして埋め込みます。
作成した新しいView Controllerでステータスバーを非表示に設定すると、正常に機能します。
これはUINavigationBar
が自動的に処理するもののように感じますが、この回避策はかなりうまく機能するようです。
別の注意:ナビゲーションバーの色を変更する場合、コンテナビューの上に別のビューを作成し、ナビゲーションバーの色と一致するように色を変更する必要もあります。
私は、小さなアプリの場合、プッシュを使用するモードからモーダルセグエに変更し、独自のナビゲーションバーを追加しました。見た目が良いので、Pushを使用しました。また、すでに別の部分のモーダルがありました。スタイルの理由で、これを別の方法でアニメーション化したかったのです。
小さいアプリの場合、これが最も速くて簡単なソリューションかもしれませんが、次回の更新ではNavigation Controllerを使用する必要があります。そのために、ステータスバーをオンにすると思いますが、これは私にとって大したことではなく、機能します。
"safeAreaLayoutGuide" iOS 11の新しい更新を使用する必要があると思います
Appleは、このiphone xの安全でない領域を回避するために必要なAPIを提供してくれました。これを行うには、コードで新しい safeAreaLayoutGuide アンカーを使用します safeAreaLayoutGuide