CADisplayLink прекращает обновлять, когда UIScrollView прокрутил

Заголовок вполне сам объяснительный, но у меня есть некоторая анимация, сделанная в цикле, инициированном CADisplayLink. Однако, как только я прокручиваю UIScrollView, я добавил к своей иерархии представления, анимация останавливается сразу, только для возврата снова, когда прокрутка полностью остановилась и зашла в тупик....

Так или иначе отменять это поведение?

16
задан Tricky 26 March 2010 в 17:08
поделиться

4 ответа

Запустить ссылку отображения (используя -addToRunLoop: forMode: ) в другом потоке с другим циклом выполнения. Итак, создайте новый поток, создайте цикл выполнения в этом потоке и запустите CADisplayLink в этом цикле потока / выполнения.

6
ответ дан 30 November 2019 в 15:35
поделиться

Вы также можете смягчить последствия этой проблемы, используя NSRunLoopCommonModes вместо NSDefaultRunLoopModes :

[displayLink addToRunLoop:[NSRunLoop currentRunLoop]
                  forMode:NSRunLoopCommonModes];
29
ответ дан 30 November 2019 в 15:35
поделиться

Я обнаружил, что если установить интервал между кадрами на 2 вместо 1 (то есть 30 кадров в секунду), все будет работать нормально. Итак, что я делаю, это устанавливаю его на 2, когда появляется мое всплывающее окно, и сбрасываю его на 1, когда оно закрывается.

1
ответ дан 30 November 2019 в 15:35
поделиться

NSRunLoopCommonModes, похоже, нарушает подвижность и непрерывность uiscrollview.

2
ответ дан 30 November 2019 в 15:35
поделиться