CATiledLayer с анимацией контента - PullRequest
1 голос
/ 29 апреля 2011

У меня есть этот UIView, который поддерживается CATiledLayer. Моя настройка работает довольно плавно в данный момент, но ужас начинается, когда я хочу анимировать определенные объекты вида на этом CATiledLayer.

Я прочитал, что могу заставить CATiledLayer перерисовать себя, используя setNeedsDisplay. Но это на самом деле перерисовывает все на экране. Таким образом, все плитки загружаются заново.

Как мне обновить слой, когда что-то оживляет? Давайте возьмем в качестве примера следующее: у меня есть 6 зеленых прямоугольников на моем слое, и когда я нажимаю кнопку UIB, я бы хотел изменить цвет прямоугольника с номером 4 на красный и переместить прямоугольник 1 2 и 3 на кривую Безье.

1 Ответ

2 голосов
/ 27 июня 2011

вы можете использовать CATiledView: setNeedsDisplayInRect: чтобы отобразить только части слоя.

в вашем случае вы должны:

  1. Перерисовать 4 с новым цветом
  2. перерисовать старые позиции 1, 2 и 3 без прямоугольников
  3. перерисовать новые позиции на 1, 2 и 3
...