0

ich mehrere Versionen von benutzerdefinierten UINavigationController individuelle Übergangsanimation Beispiele verschiedene Tutorials und heruntergeladen befolgt haben:UINavigationController individuelle Übergang, verhindert nicht sichtbare Ansicht-Controller in Stapel von rotierenden

Und was ich geschrieben habe und was ich heruntergeladen habe alle leiden unter dem gleichen Problem. Nach dem Anzeigen eines neuen View-Controllers, wenn ich das Gerät rotiere und dann zurück navigiere, wurden keine der vorherigen View-Controller im Stack gedreht. Es fühlt sich so an, als hätte ich mit der benutzerdefinierten Animation den View-Controller von den UINavigationControllers-Kind-Controllern entfernt und sendet daher keine der Rotationsnachrichten, die er empfängt, herunter.

Hat jemand in das hineingeraten? Bin ich, und all diese anderen Leute machen etwas falsch? Oder ist dies eine unbeabsichtigte Konsequenz von benutzerdefinierten Übergangsanimationen mit UINavigationControllern?

Ich habe auf Gerät und Simulator mit den gleichen Ergebnissen getestet.

Nach dem Schreiben keine darüber ließ mich darüber nachdenken, was passieren würde, wenn einer meiner Übergänge nicht benutzerdefiniert wäre, also habe ich das getestet und die nicht benutzerdefinierte animierte Übergang hat dieses Problem nicht, der View-Controller von überging erhält die Rotationsnachricht immer noch entsprechend. Dieses Problem ist speziell auf die Verwendung einer benutzerdefinierten Übergangsanimation zurückzuführen.

+0

Diesen Beitrag in den Entwicklerforen gefunden: https://forums.developer.apple.com/thread/11612 Der vorgeschlagene Fix funktioniert, aber ist sehr hacky –

Antwort

0

Ich habe keine tatsächliche Antwort, weil dies ein tatsächlicher Apple Bug scheint. Von diesem forum wurde ein Radar abgelegt und ein Hack zur Behebung des Problems gezeigt. Hier ist, was ich getan habe:

Zuerst habe ich diese Erweiterung zu UIViewController hinzugefügt, um die Draufsicht in meiner aktuellen Ansichtshierarchie zu setzen, damit der Rahmen mit dem UIWindows-Rahmen übereinstimmt und die Ansicht effektiv rotiert.

extension UIViewController { 
    func rotateTopView(view:UIView) { 
     if let superview = view.superview { 
      rotateTopView(view: superview) 
     } else { 
      view.frame = UIWindow().frame 
     } 
    } 
} 

Zweitens habe ich einen Anruf auf meine neue rotateTopView Methode in meiner viewWillAppear Methode des Viewcontrollers, die betroffen waren:

override func viewWillAppear(_ animated: Bool) {   
    // Hack to fix rotation issues 
    self.rotateTopView(view: view) 
} 

Hoffentlich Apple-bald die Rotation nach benutzerdefinierter Animation Problem beheben, aber angesichts dem Original-Radar wurde 2015 eingereicht Ich halte nicht den Atem an.

+0

Oh Mann! Danke, dass du das hinzugefügt hast. Es dauerte eine Weile, bis ich herausfand, dass der NavigationController meinen Bildschirm in die richtige Position brachte, aber deine Erklärung, die ihn mit der Animation verknüpfte, war sehr hilfreich. – georryan

Verwandte Themen