Я создаю приложение для рисования. Короче говоря, пользователь рисует пути, и эти пути анимируются на основе различных настроек. Пути могут дрожать, пульсировать, исчезать между цветами и т. Д.
Анимация реализована в виде чистой функции рендеринга, которая принимает состояние и возвращает UIImage. У меня есть UIView
, который запрашивает каждый новый кадр с определенной частотой кадров и по очереди устанавливает свойство изображения.
Однако, хотя пользователь добавляет новые точки и пути (либо с помощью touchesMoved, либо с помощью panGesture, установленного на главном чертежном виде), анимация полностью останавливается.
Кажется, что, поскольку пользователь взаимодействует с представлением в основном потоке, это препятствует обработке графики, в том числе и в основном потоке. Я попытался переместить рендеринг в фоновую очередь, но это не решило проблему.
Конечно, есть много приложений для рисования, которые предъявляют эти требования как к содержанию в реальном времени, так и с возможностью добавления нового контента в реальном времени. Как мне выполнить оба эти требования?