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?
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:
... ich vermute also, dass die Verzögerung durch einen besonders langen Übergang verursacht werden kann, oder wenn Sie in Ihrem Layout-Code leistungsintensiv arbeiten.
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.
Tags und Links iphone ios performance cocoa-touch uiviewcontroller