web-dev-qa-db-ja.com

iPhone X-非表示のステータスバーがナビゲーションバーを上に押し上げる

Xcodeシミュレーターを使用してiPhone Xの動作をテストしています。何らかの奇妙な理由で、ステータスバーを非表示にすると、ナビゲーションバーが上に押し上げられ、タイトルが完全に消え、左右のボタンが切れます。 これはiPhone Xでのみ発生しています

イラスト:

enter image description here

ステータスバーを非表示にし、ナビゲーションバーを表示位置に保持するにはどうすればよいですか?

UPDATE:

あなたの納得のためのサンプルプロジェクト:

https://drive.google.com/file/d/0B5qJARV-Oc9ra1hvZkpXZm9lRUE/view?usp=sharing

24
Roi Mulia

1つの解決策は、安全な領域に適切に制限されたコンテナビューコントローラ内にナビゲーションコントローラを埋め込むことです。

storyboard setup

別のView Controllerを作成し、オブジェクトライブラリから「コンテナビュー」をドラッグするだけです。このビューには、安全領域への上部、下部、先頭、および末尾の制約があり、すべて0に等しい定数です。コンテナビューからNavigation ControllerにControlキーを押しながらドラッグすると、「埋め込みセグエ」を設定するオプションが表示されます選択したView Controllerを子View Controllerとして埋め込みます。

作成した新しいView Controllerでステータスバーを非表示に設定すると、正常に機能します。

screenshot of working layout on iPhone X

これはUINavigationBarが自動的に処理するもののように感じますが、この回避策はかなりうまく機能するようです。

別の注意:ナビゲーションバーの色を変更する場合、コンテナビューの上に別のビューを作成し、ナビゲーションバーの色と一致するように色を変更する必要もあります。

13
nathangitter

私は、小さなアプリの場合、プッシュを使用するモードからモーダルセグエに変更し、独自のナビゲーションバーを追加しました。見た目が良いので、Pushを使用しました。また、すでに別の部分のモーダルがありました。スタイルの理由で、これを別の方法でアニメーション化したかったのです。

小さいアプリの場合、これが最も速くて簡単なソリューションかもしれませんが、次回の更新ではNavigation Controllerを使用する必要があります。そのために、ステータスバーをオンにすると思いますが、これは私にとって大したことではなく、機能します。

0
Symanski

"safeAreaLayoutGuide" iOS 11の新しい更新を使用する必要があると思います

Appleは、このiphone xの安全でない領域を回避するために必要なAPIを提供してくれました。これを行うには、コードで新しい safeAreaLayoutGuide アンカーを使用します safeAreaLayoutGuide

0
kishu mewara