2017-10-23 3 views
2

In unserer App verstecken wir vorübergehend die Statusleiste als Teil der Animation zwischen dem Übergang zwischen zwei Bildschirmen, die beide unterschiedliche Statusleistenstile benötigen.Sichere Bereichseinstellungen ändern sich beim Ausblenden der Statusleiste iOS 11

Wir haben einen prozentualen Animationsübergang, der beim Start die Statusleiste mit Animation ausblendet und nach dem Beenden die Statusleiste anzeigt.

Auf iOS 11 enthalten die Bereiche für sichere Bereiche die Höhe der Statusleiste, die variabel sein kann, und wenn sie ausgeblendet wird, wird der obere Bereich des sicheren Bereichs auf 0 reduziert. Dies passt alle unsere Ansichten neu an und hat einen schrecklichen Sprung zwischen den Ansichtsgrößen.

Wir wollen immer noch unsere Ansichten in den sicheren Bereich zu beschränken, da wir versuchen, iPhone X.

Können wir vorübergehend deaktivieren Sie die Änderung in den sicheren Bereich Einsätze zu unterstützen, wenn die Statusleiste versteckt?

+0

alle Updates zu diesem Thema? Wir stehen jetzt vor dem gleichen Problem. Aber dafür kann ich keine gute Lösung finden. –

+0

Hallo Tonny, ich habe es nie gelöst, ich habe gerade aufgehört, die Statusleiste zu verstecken und änderte sofort die Farbe. –

Antwort

1

Erhalten Sie einen Verweis auf die obere Einschränkung für den sicheren Bereich, und versuchen Sie, die Konstante dieser Einschränkung zu ändern, um sie für das Ausblenden/Anzeigen der Statusleiste anzupassen. Dies funktioniert für mich, allerdings in einer etwas anderen Situation, in der ich die Einschränkung in der prefersStatusBarHidden-Methode als Reaktion auf das Ein-/Ausblenden einer Werkzeugleiste konstant festlege.

+1

Ich glaube, das ist gegen Richtlinien, weil die Statusleiste auf dem iPhone X nicht die gleiche feste Größe wie die der früheren Geräte hat. Edit: Das sagte, ich bin mir nicht sicher, es gibt noch viel mehr, was Sie tun können. Wenn Sie sich für diesen Ansatz entscheiden, sollten Sie überprüfen, welches Gerät verwendet wird, und basierend auf dieser Entscheidung die Konstante bestimmen. – FateNuller

0

Normalerweise möchten Sie, dass Ihre Bildlaufansicht in die Statusleiste (sicherer Bereich) verschoben wird, und passen Sie den Inhaltseinschub einfach an, anstatt nur innerhalb des sicheren Bereichs auszulegen. Die Einstellung erfolgt standardmäßig automatisch für UIScrollView. Siehe contentInsetAdjustmentBehavior.

Wenn Sie scroll view volle Ansichtsgröße haben (unter sicherem Bereich), funktioniert das Ausblenden und Anzeigen der Statusleiste perfekt für mich, obwohl die Sicherheitsbereichseinfügungen in der Bildlaufansicht automatisch geändert werden.

0

Versuchen hinzufügen 2 Einschränkungen:

1) Ansicht - Super

enter image description here

2) view - safeArea

enter image description here

+0

Diese Antwort würde nicht unterstützen iPhone X –

+0

Das funktioniert gut auf dem iPhone X, aber nur, wenn die erste Einschränkung (view - superview)> = 20 – maxwell

+0

Der Haken ist, dass die Statusleiste Höhe in der Statusleiste enthalten ist. Auf einem iPhone SE ohne Navigationsleiste die safeAreaInsets.top = 20 & die Statusleiste Höhe = 20 auf einem IPhone X die safeAreaInsets.top = 64 & die Statusleiste height = 20 Wenn die Statusleiste auf dem iPhone versteckt ist SE wird es nicht unter 20y wegen der Einschränkung fallen Aber wenn es auf dem iPhone X versteckt ist, wird es auf 44 fallen, da die Statusleiste ausgeblendet ist, ist die Einschränkung immer noch zufrieden, weil es mehr als 20 Punkte ist. Die iPhone SE-Statusleiste bleibt also stehen, aber das iPhone X wird um 20 Punkte nach oben verschoben. –

Verwandte Themen