У меня есть UIView, который устанавливает таймер, и при каждом его срабатывании он генерирует UIImage в фоновой очереди (приоритет .userInitiated
), а по окончании (измеряется в течение 1-2 миллисекунд) он выдвигается в основную очередь и обновляется. изображение UIImageView.
Это создает эффект плавной анимации (например, если таймер настроен на срабатывание 30 раз в секунду). Однако прикосновение к экрану либо замедляет, либо полностью отключает обновление. Я удалил свои переопределения касаний Began, Moved, Ended и любых GestureRecognizer, чтобы убедиться, что я не делал ничего дорогого. Простое касание экрана (особенно быстрое перетаскивание) предотвращает обновление пользовательского интерфейса.
Я смотрел это и погуглил столько сообщений SO, сколько смогу, но я полностью застрял на этом.
Вот воспроизведение проблемы. Запустите приложение, и оно отобразит упрощенный рендеринг базового проекта. Оттуда вы можете перетащить / коснуться экрана и заметить, что кадры либо замедлятся, либо ползут, либо полностью останавливаются.
Github Repro