Я использую CADisplayLink
для рисования кадров с использованием метода EAGLView
в игре со скоростью 60 раз в секунду.
Когда я звоню UIView
animateWithDuration:
, частота кадров падает до половины, от 60 до 30 кадров в секунду на время анимации. Как только анимация закончена, fps мгновенно поднимается до 60.
Я также попытался использовать NSTimer
метод анимации вместо CADisplayLink
и все равно получить тот же результат.
Такое же поведение происходит, когда я нажимаю кнопки громкости, когда значок динамика исчезает, поэтому он может использовать animateWithDuration
. Поскольку я хотел бы иметь возможность правильно обрабатывать значок динамика в своем приложении, это означает, что я не могу просто переписать код анимации для использования другого метода, отличного от animateWithDuration
, но вам нужно найти решение, которое с ним работает.
Я знаю, что есть возможность замедлить анимацию для отладки на симуляторе, однако я испытываю это на устройстве, и такая опция не включена. Я также попытался использовать различные опции для animateWithDuration
, такие как линейное и взаимодействие с пользователем, но ни у кого не было улучшения.
Я также знаю, что могу разработать механизм, который все еще может работать с частотой кадров, которая широко варьируется. Тем не менее, это не идеальное решение этой проблемы, так как для игр желательно иметь высокий fps.
Кто-нибудь видел эту проблему или решил ее раньше?