Ich habe ein sehr seltsames Problem erlebt und ich habe mich gefragt, ob mir jemand hier helfen könnte, da ich total verloren bin.Leistungsproblem bei der automatischen iOS-Anzeige im Hochformat. [NSISEngine optimieren]
Kontext: Ich entwickle eine App mit einer relativ einfachen Hierarchie. Nur ein paar Blick Controller, aber eine ganze Reihe von hochauflösenden Bildern. Sie werden in einem UIScrollView
mit etwas Text usw. dargestellt. Während des Tests im Hochformat scrollte die Scrollview überhaupt nicht reibungslos. Es schien, als wäre die Framerate auf etwa 4-5 fps gefallen. Zuerst dachte ich, es sei wegen der hochauflösenden Bilder.
Aber dann habe ich das iPad in Querformat und alles lief reibungslos. Da ich eine separate XIB-Datei für Hoch- und Querformat habe, dachte ich, dass es im Portrait-Xib ein Problem geben muss. Es stellte sich heraus, dass es nicht war. Beide hatten die gleiche VC-Klasse und verwendeten daher denselben Code, und beide XIBs sind bis auf die Größe und Position der Ansichten fast identisch.
Um das Problem einzugrenzen, habe ich TimeProfiler von Instrument verwendet, um zu sehen, was das Problem verursacht. Wie sich herausstellte, zeigte TimeProfiler einige Aufrufe an [NSISEngine optimize]
(ausgelöst durch NSLayoutConstraint
). Im Hochformat-Modus waren mehr Anrufe und diese Anrufe dauerte viel länger. Weiter unten im Baum sah ich, dass im Hochformat [NSISEngine optimize]
[NSISEngine fixupIntegralizationViolations]
genannt und in der Landschaft nicht.
Ich entfernte sogar alle Viewcontroller aus der App mit Ausnahme der rootVC und einer anderen, die von der RootVC präsentiert wird. Das präsentierte vc enthält nur einige Bilder, Buttons und einige Animationen. Es hat nur eine Xib für beide Ausrichtungen und ist (wie alle anderen auch) mit Auto-Layout ausgelegt.
Das Layout funktioniert so, wie es in beiden Orientierungen sollte und es gibt keine Mehrdeutigkeiten (soweit ich das beurteilen kann. Mindestens po [[UIWindow keyWindow] _autolayoutTrace]
zeigt keine).
Ich habe einen Screenshot des TimeProfile des Präsentationsprozesses der VC angehängt. Eins für Porträt und eins für Landschaft. Wie Sie sehen können, dauern die Aufrufe von [NSISEngine optimize]
im Querformat nur eine Millisekunde, während sie im Hochformat über 3000 ms dauern.
Gibt es jemanden, der mir sagen kann, warum das ist? Oder vielleicht eine Idee, was ich tun kann, um herauszufinden, was das Problem ist?
Jede Hilfe würde sehr geschätzt werden!
Thx
Link zu einer größeren Version des Bildes: link
nur neugierig, wenn Sie jemals einen Follow-up mit diesem Fehlerbericht hatten? Ich habe ähnliche Probleme mit seltsamen Verzögerungen bei der automatischen Verzögerung, mit Instrumenten, die viele Aufrufe von NSISEngine fixUpIntegralisationViolations zeigen ... –
Nein, leider habe ich noch nichts gehört – Tobi