UIView animateWithDuration :замедляет частоту кадров анимации

Я использую CADisplayLinkдля отрисовки кадров по методу EAGLViewв игре со скоростью 60 раз в секунду.

Когда я звонюUIViewanimateWithDuration:частота кадров падает ровно вдвое, с 60 до 30 кадров в секунду на время анимации. Как только анимация заканчивается, частота кадров мгновенно возрастает до 60.

Я также пытался использовать метод анимации NSTimerвместо CADisplayLinkи все равно получаю тот же результат.

То же самое происходит, когда я нажимаю кнопки громкости, когда значок динамика исчезает, поэтому он может использовать animateWithDuration. Поскольку я хотел бы иметь возможность плавно обрабатывать значок динамика в своем приложении, это означает, что я не могу просто переписать свой код анимации, чтобы использовать другой метод, кроме animateWithDuration, но мне нужно найти решение, которое работает с ним.

Я знаю, что есть возможность замедлить анимацию для отладки в симуляторе, однако я испытываю это на устройстве, и такая опция не включена. Я также пытался использовать различные варианты для animateWithDuration, такие как линейный и взаимодействие с пользователем, но ни один из них не принес улучшения.

Я также знаю, что могу разработать движок, который все еще может работать с частотой кадров, которая сильно варьируется. Однако,это не идеальное решение данной проблемы, так как для игр желателен высокий fps.

Кто-нибудь видел эту проблему или решил ее раньше?

13
задан Michael Chinen 8 August 2012 в 04:15
поделиться