Próbuję zoptymalizować moją aplikację. Jest to dość bogaty wizualnie, więc ma sporo warstwowych UIViews z dużymi obrazami i mieszanie itpCzy powinienRasteryzować na rasteryzacji powodującej CALayer przed lub po transformacji warstwy?
Ja eksperymentowałem z właściwością shouldRasterize
na CALayers
. W jednym przypadku w szczególności mam UIView
, który składa się z wielu widoków podrzędnych, w tym tabeli. W ramach przejścia, w którym cały ekran jest przewijany, ta wartość skaluje się i obraca (za pomocą transformacji).
Zawartość UIView
pozostaje statyczna, więc pomyślałem, że sensowne byłoby ustawienie view.layer.shouldRasterize = YES
. Jednak nie zauważyłem wzrostu wydajności. Czy to możliwe, że jest to ponowne rasteryzowanie każdej klatki w nowej skali i rotacji? Miałem nadzieję, że rasteryzuje na początku, kiedy ma macierz przekształceń tożsamości, a następnie buforuje to, gdy skaluje się i obraca podczas przejścia?
Jeśli nie, czy istnieje sposób, w jaki mógłbym to zmusić? Poza dodaniem nadmiarowego super widoku/warstwy, która nie robi nic poza skalowaniem i obracaniem zrasteryzowanej zawartości ...
Co spowodowałoby, że zmieni kolor na czerwony? Kończy się pamięć GPU? – jjxtra
Albo to, albo warstwa została ponownie wyrenderowana, więc pamięć podręczna zostanie unieważniona. – NachoSoto