Was kann zwischen viewWillAppear und viewDidAppear passieren?

9

Ich optimiere einen Übergang, der auf meinem Gerät langsam zu sein scheint. Ich drehe einen UIViewController von einem anderen, wenn eine UITableView Zeile ausgewählt ist. Es gibt eine merkliche Pause nach der Zeilenauswahl und bevor die neue Ansicht gedrückt wird.

Eine Protokollierung zeigt an, dass mein gesamter Code ziemlich schnell ist, von der Zeilenauswahl bis zum viewWillAppear des gestoßenen Controllers. Aber dann wird die Zeit zwischen viewWillAppear und viewDidAppear bei ungefähr 0,7 Sekunden protokolliert.

Der Übergang selbst (glaube ich) sollte nur 0,3 Sekunden dauern. Was könnte den Rest ausmachen?

Ich teste auf einem iPhone 4, also erwarte ich nicht die schneidigste Leistung. Aber ich sollte in der Lage sein, die gleiche Leistung von anderen ähnlichen Apps auf demselben Gerät zu erreichen, nicht?

    
Ben Packard 20.10.2012, 18:48
quelle

2 Antworten

1

Ich hatte vor ein paar Wochen eine ähnliche Frage und schrieb einen Blogbeitrag über das, was ich gefunden habe:

Ссылка

Die TL; DR-Version ist, dass iOS:

  • Führe das Layout deiner neuen Szene durch
  • Führe den Übergang zu deiner neuen Szene durch (wenn es sich um einen animierten Übergang handelt)

... ich vermute also, dass die Verzögerung durch einen besonders langen Übergang verursacht werden kann, oder wenn Sie in Ihrem Layout-Code leistungsintensiv arbeiten.

    
BradB 17.09.2014 21:04
quelle
0
  

Der Übergang selbst (glaube ich) sollte nur 0,3 Sekunden dauern. Was könnte den Rest ausmachen?

Ressourcen werden normalerweise in den folgenden Methoden verbraucht: drawRect: , layoutSubviews , viewDidLoad , viewWillAppear: . Auch das Laden von NIB erfordert möglicherweise viel Zeit.

Nach viewWillAppear: erstellt iOS einen Schnappschuss der neuen (und wahrscheinlich aktuellen) Ansicht, um eine flüssige Animation zwischen zwei Bildschirmen zu erzielen. Stellen Sie daher sicher, dass der Zeichen- und Layoutcode für beide Controller-Ansichten schnell genug ist.

    
Stream 20.10.2012 18:59
quelle