Заголовок вполне сам объяснительный, но у меня есть некоторая анимация, сделанная в цикле, инициированном CADisplayLink. Однако, как только я прокручиваю UIScrollView, я добавил к своей иерархии представления, анимация останавливается сразу, только для возврата снова, когда прокрутка полностью остановилась и зашла в тупик....
Так или иначе отменять это поведение?
Запустить ссылку отображения (используя -addToRunLoop: forMode:
) в другом потоке с другим циклом выполнения. Итак, создайте новый поток, создайте цикл выполнения в этом потоке и запустите CADisplayLink в этом цикле потока / выполнения.
Вы также можете смягчить последствия этой проблемы, используя NSRunLoopCommonModes
вместо NSDefaultRunLoopModes
:
[displayLink addToRunLoop:[NSRunLoop currentRunLoop]
forMode:NSRunLoopCommonModes];
Я обнаружил, что если установить интервал между кадрами на 2 вместо 1 (то есть 30 кадров в секунду), все будет работать нормально. Итак, что я делаю, это устанавливаю его на 2, когда появляется мое всплывающее окно, и сбрасываю его на 1, когда оно закрывается.
NSRunLoopCommonModes, похоже, нарушает подвижность и непрерывность uiscrollview.