2014-06-05 14 views
8

Podczas korzystania z czas Profiler na interakcji z UIScrollView (zawierających wiele subviews) często widzę CA::Transaction::commit() w najcięższej ślad stosu. Jaka jest ta metoda i jak mogę w niej spędzać mniej czasu?Bottleneck w CA :: transakcja :: commit()

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

Moja wykształcone przypuszczenie, że jest to jak rdzeń warstwy animacji są wysyłane do GPU i że to może być przyspieszone poprzez zmniejszenie wymiarów i/lub liczby CALayer s, które muszą być świadczone (tj ilość danych, które muszą zostać przesłane do GPU).

+0

Wypróbuj jawnie użyć CALayers wewnątrz firmy UIViews? –

+0

Czy możesz udostępnić kod przy inicjalizacji i interakcji UIScrollView? –

Odpowiedz

3

Twoje przypuszczenie może być poprawne. Nagie pamiętać, że następujące rzeczy są zazwyczaj również wykonane w CATransaction::commit()

  • Layouting z CALayers: layoutSublayers, preferredFrameSize, CALayoutManager
  • wszystko CAAction s
  • czasami również rendering różnych Filtr-właściwościach CALayer
  • prawdopodobnie layouting z subviews w swojej przewijania widoku