2014-06-05 5 views
8

Bei der Verwendung des Time Profiler auf Interaktionen mit einem UIScrollView (enthält viele Subviews) sehe ich oft CA::Transaction::commit() in der schwersten Stack-Trace. Was ist diese Methode und wie kann ich weniger Zeit damit verbringen?Engpass in CA :: Transaction :: commit()

Screenshot http://oi59.tinypic.com/11goi01.jpg

Meine begründete Vermutung ist, dass dies, wie Core Animation Schichten auf die GPU gesendet werden und dass dies durch eine Verringerung der Abmessungen und/oder die Anzahl der CALayer s beschleunigt werden könnte, die gemacht werden müssen (dh die Menge der Daten, die an die GPU gesendet werden müssen.

+0

Versuchen explizit Sie CALayers in Ihrem UIViews verwenden? –

+0

Können Sie Code mit Ihrer UIScrollView Initialisierung und Interaktion teilen –

Antwort

3

Ihre Schätzung könnte richtig sein. im Auge Bare, dass folgende Dinge sind in der Regel auch in der CATransaction::commit()

  • Layouting von CALayers getan: layoutSublayers, preferredFrameSize, CALayoutManager
  • alle CAAction s
  • manchmal auch die Wiedergabe der verschiedenen Filter-Eigenschaften eines CALayer
  • wahrscheinlich das Layouten der Subviews im Scroll-Ansicht