Анимация CALayer создает нежелательное мерцание из-за аппаратных ограничений; нужны альтернативные способы оживить мое представление

Я пытаюсь сделать приложение, которое анимирует рот на лице человека, очень похожее на jibjab.com (пример можно найти здесь). Чтобы сделать это, у меня был слой полностью черного цвета в качестве самого нижнего слоя, за которым следовал слой лица с обрезанной областью рта/подбородка, и, наконец, слой только рта/подбородка вверху. Когда я перемещал слой рта/подбородка вниз, обнажалась обрезанная область слоя 2, создавая эффект открытого рта. (Код можно найти здесь< /а>)

Тем не менее, анимация иногда мерцает, и, глядя на другие вопросы SO, это звучит как аппаратное ограничение, вызванное слоем с обрезанным ртом.

Единственный альтернативный подход, который я могу придумать, — вручную анимировать область черного рта вместо того, чтобы делать это неявно путем смещения слоя рта. Я бы сделал это, создав 3 слоя: 1 со всем изображением, 1 со ртом/подбородком и один для черной внутренней области рта. Я бы анимировал слой рта/подбородка, как и раньше, но использовал CGPath для черной внутренней области рта и использовал NSTimer для обновления пути каждые x секунд, чтобы он двигался в унисон с анимацией слоя рта/подбородка.

Есть ли у кого-нибудь альтернативные подходы или решение моей первой проблемы?


person Mahir    schedule 22.05.2013    source источник
comment
У вас есть код, чтобы поделиться? В противном случае довольно сложно помочь... Я думаю, что и настройка слоев, и фактическая анимация могут быть полезны.   -  person David Rönnqvist    schedule 22.05.2013
comment
stackoverflow.com/questions/16556824/   -  person Mahir    schedule 22.05.2013
comment
Я добавил код в предыдущий вопрос SO   -  person Mahir    schedule 22.05.2013
comment
Есть ли у вас проблемы с производительностью при запуске через Instruments?   -  person David Rönnqvist    schedule 23.05.2013
comment
эй @Mahir какие-нибудь идеи об этом типе приложений ... как создать? Можете ли вы дать какую-нибудь ссылку или предложение, если вы добились успеха в этом. Я очень рад за меня.   -  person Dhaval Bhadania    schedule 20.08.2014