2014-06-05 16 views
8

Quando si utilizza il Tempo Profiler sulle interazioni con un UIScrollView (che contengono molti subviews) Vedo spesso CA::Transaction::commit() nella più pesante traccia dello stack. Qual è questo metodo e come posso dedicare meno tempo a questo?Collo di bottiglia in CA :: :: transazione commit()

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

mio un'ipotesi è che questo è il modo core layer di animazione vengono inviati alla GPU e che questo potrebbe essere accelerato riducendo le dimensioni di e/o il numero di CALayer s che deve essere reso (vale a dire la quantità di dati che devono essere inviati alla GPU).

+0

tenta di utilizzare in modo esplicito CALayers dentro le UIViews? –

+0

Puoi condividere il codice con l'inizializzazione e l'interazione di UIScrollView –

risposta

3

La tua ipotesi potrebbe essere corretta. Bare in mente che di seguito le cose sono in genere anche fatto in CATransaction::commit()

  • interfaccia grafica di CALayers: layoutSublayers, preferredFrameSize, CALayoutManager
  • tutti CAAction s
  • volte anche la resa dei vari filtro-proprietà di un CALayer
  • probabilmente l'interfaccia grafica dei subviews nel scroll-view