Вы должны использовать Core Animation для этого. Вы должны создать прозрачное представление / окно, достаточно большое, чтобы вместить всю анимацию. Затем вы должны использовать CALayer
объекты для выполнения реальной анимации.
Слои Core Animation - это, по сути, облегченные обертки высокого уровня вокруг поверхностей OpenGL, и рендеринг слоев выполняется с помощью графического процессора, что обеспечивает гораздо лучшую производительность, чем анимация, управляемая процессором, такая как NSViewAnimation
.
Имейте в виду, что, поскольку слои Core Animation легкие, в них не встроена обработка событий, поэтому вам придется выполнять все отслеживание мыши в контроллере вида / представления.
Другой вариант - использование представлений со слоями (которые имеют свои собственные CALayer
) и анимация положения кнопок с использованием прокси-сервера аниматора. Этого может быть достаточно для достижения того, что вы хотите, и поскольку кнопки по-прежнему заполнены NSButton
объектами, они по-прежнему обрабатывают все события NSView
.
Возможно, вам следует прочитать Обзор анимации , чтобы дать вам лучшее представление о том, как работают все эти технологии.