Используют ли анимационные блоки UIKit, например animateWithDuration:animations:completion, CADisplaylink?

Я надеюсь, что это простой вопрос. Я везде искал ответ на этот вопрос, но, похоже, не нашел его. Кто-нибудь знает? Блоки анимации UIKit работают с использованием displaylink?


person Geoff H    schedule 25.08.2014    source источник


Ответы (1)


Нет, не знают.

API-интерфейсы анимации UIView на основе блоков предоставляют CAAnimation слою с помощью метода делегата actionForLayer:forKey: (представление всегда является делегатом слоев).


Ранее я писал в блоге о том, как анимация UIKit работает в objc.io. #12 (примерно первые 20% поста говорят об этом взаимодействии между представлением и его слоем).

person David Rönnqvist    schedule 25.08.2014
comment
Спасибо, Дэвид. Проверим. Я пытаюсь запустить SKView одновременно с UIView с большим количеством анимации, из-за которой материал UIView действительно работает и заикается. Я предполагаю, что это конфликт между таймером SpriteKit на основе displaylink и механизмом таймера, лежащим в основе анимации UIView. Должен ли я пытаться реализовать свои блоки анимации UIView с помощью CADisplayLink, чтобы все было гладко? - person Geoff H; 25.08.2014
comment
Трудно сказать, имея так мало информации. Также предположения о производительности часто ошибочны. Используйте Инструменты, чтобы измерить и увидеть, что является узким местом. Шаблон Core Animation — хорошее начало. Посмотрите на Time Profiler, чтобы узнать, что делает ваше приложение. В зависимости от того, что это говорит вам, вы также можете получить некоторую полезную информацию от CPU Monitor о том, сколько работы Core Animation выполняется вне вашего процесса (это может быть актуально, если ваше приложение в основном выполняет анимацию UIView или напрямую использует Core Animation, но это также может вам вообще ничего не сказать (нечего сказать)) - person David Rönnqvist; 25.08.2014