Когда частота кадров и частота обновления экрана рассинхронизированы, появляются визуальные артефакты:
CADisplayLink — рекомендуемый инструмент для синхронизации цикла рендеринга с циклом обновления дисплея.
let displayLink = CADisplayLink(target: self, selector: #selector(updateFrame))
displayLink.add(to: .main, forMode: .common)
Ключевые свойства для управления временем:
preferredFrameRateRange — позволяет указать желаемый диапазон частоты кадров для адаптивных дисплеевtimestamp — время, когда последний кадр был отображёнduration — временной интервал между кадрами дисплеяCADisplayLink для управления анимациями вместо Timer или DispatchQueue, так как те не синхронизированы с дисплеемpreferredFrameRateRange, чтобы система адаптивно переключалась между 60–120HzCADisplayLink, чтобы не пропустить кадрыСинхронизация частоты кадров с частотой обновления дисплея через CADisplayLink обеспечивает плавные анимации без разрывов и оптимальный пользовательский опыт на всех iOS-устройствах.
CADisplayLink синхронизирует твой rendering loop с refresh cycle дисплея, что делает её лучше Timer или DispatchQueue для timing анимаций, потому что эти альтернативы не синхронизированы с дисплеем.
Новый — ещё не проверен сообществом
Вы