Изучая Core Animation, я очень быстро понял, что если вы не сделаете это правильно, вы получите действительно странное неопределенное поведение. В связи с этим у меня есть несколько вопросов, которые помогут мне концептуально лучше понять это.
Мой подкласс NSView объявляет следующее в своем init. Это представление является частичным представлением обычного представления с поддержкой слоя.
[self setLayer:[CALayer layer]]; [self setWantsLayer:NO];После этого, когда и в каких ситуациях мне следует обращаться к себе, а не к [слою себя]? Я управлял слоем ТОЛЬКО с явной и неявной анимацией, избегая [self setFrame:] и т. Д. И используя [[self layer] setPosition] и т. Д.
Проблема с этим подходом заключается в том, что фактический кадр представления остается в одном месте на протяжении всей применяемой анимации. Что, если мое представление должно получать события мыши? Например, у меня есть представление, использующее базовую анимацию, которое перемещается мышью. Есть ли способ каким-то образом синхронизировать фрейм вида с текущим состоянием уровня представления, чтобы я мог получать правильные события мыши?
Что касается уровня представления, очевидно, он доступен только во время реальной анимации. Есть ли какое-то свойство слоя, которое может сказать мне, где он ДЕЙСТВИТЕЛЬНО визуально, даже когда анимация не выполняется?