Хотя на этот вопрос уже был дан ответ, я бы хотел немного его расширить.
В действительности рекомендуется использовать CADisplayLink и frameInterval, чтобы ограничить базовую частоту кадров, но на самом оборудовании дисплей имеет фиксированную частоту обновления иМетод CADisplayLink синхронизирует обновление оборудования с вызовом наших методов рисования, поэтому у методов рисования больше всего времени для работы.
Поскольку CADisplayLink генерируется аппаратно, единственное, что вы можете с ним сделать, это разделить время, вот чтоframeInterval готов сделать.
frameInterval = 1 дает вам 60 кадров в секунду
frameInterval = 2 дает вам 30 кадров в секунду
frameInterval = 3 получает 20 кадров в секунду
Я, например, много использую frameInterval = 5 для меню, оно по-прежнему дает мне 12 кадров в секунду (примерно минимум для разумной простой анимации), а потребление батареи резко сокращается.
Я также использовал динамическое изменение частоты кадров, измеряя среднюю частоту кадров и выбираяt, помогает сохранять игровую текучесть.
FPS вне этих значений не очень стабильны и обычно приводят к дрожанию анимации, временной интервал, с которым мы должны работать, составляет 1/60 с, поэтому только кратныеэто создаст плавную анимацию.Даже если вы не используете CADisplayLink и не делаете идеальную временную маршрутизацию, чтобы доставить что-то еще, аппаратное обеспечение будет работать с этим временным интервалом.