У меня есть пример UIView
, который я оживляю, используя CAKeyframeAnimation
. Это циклическая анимация и будет постоянно в движении. Тем не менее, мне нужно разрешить взаимодействие пользователя с элементом (точнее, отвечая на краны). Поскольку CoreAnimation перемещает только слой презентации, а не модель, я не могу использовать экземпляр UIButton
, например, чтобы по существу получить события touchUpInside
.Лучший образец для обработки штрихов в анимированном UIView/CALayer?
Рассмотрим следующий базовый пример компоновки:
Я использую синий ящик для сенсорных событий с помощью переопределения метода touchesEnded:withEvent:
на UIView
подкласса. Затем я пузыряю это событие через NSNotification
(я действительно не хочу вводить много связей для обработки этого события) в содержащий контроллер представлений, который затем делает hitTest:
на анимированном красном поле.
Все это кажется довольно взломанным, чтобы просто коснуться анимированного UIView
. Каковы некоторые из лучших моделей для обработки штрихов для анимированных UIView
/CALayer
экземпляров?
Вам нужно использовать CA? CA лучше всего подходит для плавной анимации, потому что он легкий, и он легкий, потому что у него нет всего материала для обработки событий (отчасти это правда). Если вы каким-то образом должны были добавить к нему обработку событий, то вы можете уничтожить гладкие способности, способные к использованию на GPU. Я не уверен, что есть способ обойти это. Насколько это необходимо? Возможно, вам захочется оживить некоторые из других методов анимации, которые фактически перемещают модель с помощью процессора.Просто задумываясь вслух. – Vinnie
@Vinnie - Проблема в том, что этот пример - очень простая анимация. Реальная проблема на самом деле включает в себя несколько ключевых кадров для анимации вида вдоль пути, а также некоторого вращения по мере продвижения по пути. Анимация также должна повторять ad-infinitum, поэтому использование блоков UIView на самом деле не похоже на хорошую подгонку. –