Ich kann es mir leisten, diese Frage zu stellen, denn nach großen Recherchen fast 2 Tage Googeln, Stack Overflowing, etc ...
Mein Problem ist das: Ich präsentiere ViewController von meinem Haupt ViewController wie folgt:
%Vor%Wenn ein iPhone-Benutzer angerufen wird oder sein Telefon als Hotspot verwendet wird, wird die Statusleiste vergrößert und mein modal präsentiertes VC wird nach unten verschoben, aber der Ursprung wird auf (0; 0) gesetzt Das Problem ist, wenn der Benutzer den Anruf beendet, während er sich in meiner Anwendungsstatusleiste auf die normale Größe befindet, aber Modal VC nicht nach oben gerückt ist.
Ich wusste dank dieser Benachrichtigung, wenn es im Code passiert:
%Vor%Das Schlimmste ist, dass die Frames corect sind und der Ursprung immer noch (0,0)
istgibt es eine Möglichkeit zu aktualisieren modal vc präsentiert? ohne dissmiss und präsentiert es wieder?
Brauchst du wirklich einen benutzerdefinierten Übergang für dieses Modal? Wenn nicht, entfernen Sie die Zeile "navigation.modalPresentationStyle = UIModalPresentationCustom" und Sie können loslegen.
Wenn Sie einen benutzerdefinierten Stil benötigen, ist dies ein bekannter Fehler mit dem UIModalPresentationCustom-Stil in iOS 8+ und der Statusleiste. AFAIK, du musst das mit animateTransition hacken und die Frames an die richtigen Stellen schieben.
Es gibt auch einen schrecklichen Hack dafür, wenn Sie im unten angegebenen App-Delegaten "willChangeStatusBarFrame" verwenden. Sie können es verbessern, indem Sie erkennen, ob es tatsächlich ein Modal Up gibt, und die Änderung animieren.
%Vor%Eine andere Alternative besteht darin, das modale Cover zur Statusleiste zu machen und prefersStatusBarHidden für diesen View-Controller zu überschreiben.
Ich hasse all diese Lösungen, aber es sollte Ihnen etwas Ausführliches geben, abhängig davon, wie Ihr Projekt eingerichtet ist und ob Sie diesen kleinen Platz für einen temporären modalen Dialog nicht ignorieren können.
Tags und Links ios statusbar autolayout in-call presentmodalviewcontroller