2017-10-23 31 views
2

私たちのアプリでは、異なるステータスバースタイルを必要とする2つの画面の間でアニメーションの一部として一時的にステータスバーを非表示にします。ステータスバーを隠すと安全な領域のインセットが変わりますiOS 11

私たちは、開始時にステータスバーをアニメーションで非表示にし、終了時にステータスバーを表示します。

iOS 11では、セーフエリアのインセットにはステータスバーの高さが含まれています。隠されていると、セーフエリアの上部のインセットが0の高さに降下します。 これは私たちのすべてのビューを再調整し、ビューサイズの間には恐ろしいジャンプがあります。ステータスバーを非表示にするとき、我々はiPhone X.

をサポートしようとしているので、我々はまだ安全な場所に私たちの見解を制限したい

は、我々は一時的に安全なエリアインセットに変更を無効にすることはできますか?

+0

この問題上の任意の更新を?私たちは今、同じ問題に直面しています。しかし、このための良い解決策を見つけることができません。 –

+0

こんにちはトニー、私はそれを解決したことはない、私はちょうどステータスバーを非表示に停止し、すぐに色を変更しました。 –

答えて

1

安全領域の上限制約への参照を取得し、その制約の定数を変更してステータスバーの非表示/表示を調整してみます。これは私のために働きますが、ツールバーの表示/非表示に反応して、PrefersStatusBarHiddenメソッド内で制約を一定に設定するという状況は多少異なります。

+1

iPhone Xのステータスバーは、従来のデバイスと同じ固定サイズではないため、これはガイドラインに反していると思います。 編集:あなたにできることが他にはたくさんあるとは思いません。この方法を採用する場合は、どのデバイスが使用されているかを確認し、その決定に基づいて定数を決定することができます。 – FateNuller

0

通常、スクロールビューをステータスバー(セーフエリア)に移動して、セーフエリア内にのみレイアウトするのではなく、コンテンツのインセットを調整する必要があります。調整は、デフォルトではUIScrollViewで自動的に行われます。 contentInsetAdjustmentBehaviorを参照してください。

スクロールビューのフルサイズ(セーフエリア下)がある場合は、スクロールビューでセーフエリアのインセットが自動的に変更されていても、ステータスバーを非表示にして表示することができます。

0

2つの制約を追加してみてください。

1)ビュー - スーパー

enter image description here

2)ビュー - safeArea

enter image description here

+0

この回答はiPhone Xをサポートしません –

+0

これはiPhone Xでうまくいきますが、最初の制約(view-superview)> = 20の場合のみ – maxwell

+0

ステータスバーの高さはステータスバーに含まれています。 ナビゲーションバーのないiPhone SEの場合safeAreaInsets.top = 20&ステータスバーの高さ= 20 IPhoneの場合safeAreaInsets.top = 64&ステータスバーの高さ= 20 ステータスバーがiPhoneで非表示になっている場合SEは制約のために20yを下回らないでしょう iPhone Xで隠されているときはステータスバーが隠れているので44に落ちますが、制約はまだ20点以上あるので満足しています。 したがって、iPhone SEのステータスバーは固定したままになりますが、iPhone Xは20ポイント上昇します。 –

関連する問題