Ich habe eine View-Controller A
, die die Statusleiste an der Spitze zeigt. Von diesem View-Controller möchte ich einen anderen View-Controller B
vorstellen, der die Statusleiste verbirgt. Um zu erreichen, dass ichVerstecken Statusleiste nur auf modal präsentiert View Controller
override var prefersStatusBarHidden: Bool {
return true
}
auf B
die Eigenschaft außer Kraft setzen. Für eine glatte Animation Durchsetzung, wenn die Statusleiste (dis) erscheint I außer Kraft setzt auch die Eigenschaft
override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation {
return .slide
}
Allerdings, wenn ich jetzt vorliegende View-Controller B
von A
die Statusleiste verschwindet abrupt während A
noch sichtbar ist, richtig bevor der animierte modale Übergang beginnt.
Ich bin auf der Suche nach einem Weg zu beheben Sie diese "springenden Statusleiste" Verhalten. Im Idealfall würde Ich mag eine saubere Trennung haben:
A
: zeigt StatusleisteB
: nicht Statusleiste wird zeigen
, so dass, wenn ich B
präsentieren, Die Statusleiste ist damit abgedeckt.
Da die Statusleiste scheint eine globale Ansicht, die zu keinem bestimmten View-Controller gehören, ist es wahrscheinlich schwierig, diese Art von Verhalten zu erreichen. Für den Fall, dass es nicht möglich ist, dieses genaue Animationsverhalten zu replizieren, würde ich mich auch freuen, wenn die Statusleiste während des View-Controller-Übergangs reibungslos gleitet. Wie kann ich das erreichen?
Danke für Ihre Antwort. Die eine Hälfte funktioniert, die andere Hälfte (das "Gegenteil", wenn man den View-Controller ablehnt) nicht. Es scheint, dass Sie den _both_ View-Controllern, die am Übergang beteiligt sind, Code hinzufügen müssen, um eine reibungslose Slide-In- und Slide-Out-Animation für die Statusleiste zu erhalten. Ich werde später eine weitere Antwort hinzufügen, um diesen Ansatz zu erklären.Es ist wirklich ärgerlich, dass Apple das so kompliziert gemacht hat und die Statusleiste nicht automatisch animiert - ich behaupte, dass dies in 99% aller Fälle das Verhalten wäre, das Entwickler wollen. – Mischa
Sorry, ich hätte besser "Gegenteil" geklärt! Ich dachte, das könnte passieren. Der Übergang scheint auch etwas kniffliger zu sein. Ich denke, Sie müssen möglicherweise "viewWillDisappear" und "viewWillAppear" verwenden und sicherstellen, dass Sie zum View-Controller wechseln, für den die Statusleiste ausgeblendet sein muss, bevor Sie das Flag setzen. Ich werde meine Antwort auch aktualisieren. – Samantha
@Samantha danke es hat mir geholfen ... –