2013-10-16 16 views
38

Widziałem poprawki dla niektórych lagyness problemów poprzez ustawienie właściwości warstwy widokuKiedy należy ustawić layer.shouldRasterize YES

view.layer.shouldRasterize = YES; 

ujrzałem wielką różnicę w wydajności podczas korzystania z UICollectionView i przygotowanie komórki i ustawienie propery.

Nie jestem pewien, jakie są tego konsekwencje.

Byłoby świetnie uzyskać wyjaśnienie. Dzięki!

Odpowiedz

41

W WWDC 2012 Polishing Your Interface Rotations wideo (wymagana płatna subskrypcja programisty), mówią o zaletach i konsekwencjach rasteryzacji warstw. To wideo jest na inny temat (ale interesujący), ale mówią o zaletach i wadach rasteryzacji w porównaniu do snapshotingu (od około 8 minut do filmu dają pewne informacje o związkach między hierarchią UIView, prezentacja drzewo i drzewo renderowania, a następnie zagłębić się w dyskusję o rasteryzacji po kolejnych 6 minutach filmu).

Dolna linia, jeśli masz złożony widok (tj. Stosunkowo drogi do ponownego renderowania), który animujesz, ale dla którego animowany widok się nie zmienia, rasteryzacja warstwy może poprawić wydajność, ponieważ nie powoduje ponownego renderowania warstwa przez cały czas. Ale robi to kosztem pamięci (zapisywanie zrasteryzowanego obrazu w pamięci).

Ale jeśli animujesz zmianę wewnątrz warstwy, shouldRasterize może negatywnie wpłynąć na wydajność (ponieważ ma zamiar ponownie rasteryzować warstwę dla każdej klatki animacji).

Ogólnie, jeśli animacja złożonego zestawu warstw, które same się nie zmieniają, można ustawić shouldRasterize na YES, zrób animację, a następnie wyłącz shouldRasterize.

Powiązane problemy