Ich verwende einen benutzerdefinierten Hintergrund für meine Navigationssteuerungs-Navigationsleisten
%Vor%In iOS10 wird der Hintergrund korrekt angewendet und die Navigationsleiste erscheint unter der Statusleiste:
In iOS11 sieht es jedoch so aus, als ob das Hintergrundbild immer hinter der Statusleiste angewendet wird. Ich habe verschiedene Werte für 'forBarPosition' ausprobiert, aber das ändert nichts am Verhalten.
Ich habe das Problem in einer Standalone-App mit einem einzelnen Uinaktivierungscontroller und einer einzelnen Codezeile wie oben beschrieben isoliert. Ich teste das mit dem iPhone 8 Simulator. Ich verwende den Standard-Navigationscontroller und die Navigationsleiste in meiner App.
Was mache ich falsch?
Ich stieß auf das gleiche Problem. Wie du, hat forPosition nichts unternommen, um das Problem zu beheben, obwohl es so scheint.
Ich würde meine Lösung eine Arbeit nennen.
Das Bild, das ich verwendete, war 44px hoch. Da ich wusste, dass die Statusleiste 20 Pixel groß war, erstellte ich ein neues Bild, das 64 Pixel hoch war. Der Effekt, den ich anstrebte, beinhaltete das Erweitern des Bildes unter der Statusleiste und das funktioniert genau so, wie ich es möchte.
Die Statusleiste ist transparent, so dass Sie die oberen 20 Pixel schwarz oder transparent machen oder was auch immer Sie wollen, um den gewünschten Effekt zu erzielen.
Bisher funktioniert das für mich im Simulator und iPhone SE sowohl bei iOS 11, als auch bei iPod touch mit iOS 9.3.5.
Hoffe das hilft dir.
EDIT: Ein zusätzlicher Punkt. Was auch für mich funktionierte, war ein dehnbares Bild . Dies füllte den gesamten Platz, ohne sich zu wiederholen, wie es in deinem Beispiel der Fall ist, aber das Bild, das ich verwendete, kann nicht gedehnt werden, so dass dies letztendlich nicht für mein Szenario funktioniert hat.
Ich stieß auch auf das gleiche Problem (mit 44px-Bild) und fand einen weiteren interessanten Workaround. Benutz einfach %Code% stattdessen.
Tags und Links ios uinavigationcontroller uinavigationbar ios11 uikit