2013-10-16 9 views
38

Ich habe Behebungen für einige lagyness Probleme gesehen durch die Schicht-Eigenschaft der AnsichtWann sollte ich layer.shouldRasterize auf YES

Einstellung
view.layer.shouldRasterize = YES; 

ich einen großen Unterschied in der Leistung sah, als ein UICollectionView Verwendung und Herstellung der Zellen und Einstellung der Property.

Nicht sicher, was die Implikationen sind.

Wäre toll, eine Erklärung zu erhalten. Danke!

Antwort

41

In WWDC 2012 Polishing Your Interface Rotations Video (kostenpflichtiges Entwickler-Abonnement benötigt), sprechen sie über die Vorteile und Auswirkungen von Raster-Ebenen. In diesem Video geht es um ein anderes Thema (ein interessantes), aber sie sprechen über die Vor- und Nachteile von Rasterisierung im Vergleich zu Schnappschuss (ab etwa 8 Minuten in dem Video geben sie Hintergrundinformationen über die Beziehungen zwischen der Hierarchie, der Präsentation) Baum, und der Renderbaum, und dann tauchen Sie in eine Diskussion der Rasterung weitere 6 Minuten in das Video).

Schlussfolgerung: Wenn Sie eine komplexe Ansicht (dh relativ teuer, die erneut gerendert wird), die Sie animieren, für die sich die animierte Ansicht jedoch nicht selbst ändert, kann die Rasterung die Leistung verbessern, indem die Grafik nicht erneut gerendert wird Schicht die ganze Zeit. Dies geschieht jedoch auf Kosten des Speichers (Speichern eines gerasterten Bildes im Speicher).

Wenn Sie jedoch eine Änderung innerhalb der Ebene animieren, kann die shouldRasterize die Leistung beeinträchtigen (da die Ebene für jedes Bild der Animation neu gerastert wird).

Wenn Sie eine komplexe Gruppe von Ebenen animieren, die sich selbst nicht ändern, können Sie shouldRasterize auf YES setzen, die Animation ausführen und dann shouldRasterize deaktivieren.