Core Animation - имитировать эффект закрытия окна Windows 7?

У меня есть базовый NSWindow без украшений (заголовок и т. д.), NSWindow настроен на непрозрачность, отсутствие теней и т. д. Он находится на уровне заставки (так что «самое верхнее» окно приложения)

contentView настроен на мой подкласс NSView, в котором говорится, что «Загрузка» достигается путем рисования CIImage.

Все это окно находится в центре экрана. Он открывается, когда в другом месте происходит событие загрузки. Когда нагрузка заканчивается, я закрываю окно.

Вместо того, чтобы мгновенно появляться и мгновенно исчезать, было бы здорово, чтобы он исчезал, как эффект закрытия окна Windows 7/aero, и появлялся таким же образом.

Чтобы уточнить: при закрытии окно будет увеличиваться в размере примерно на 20% и становиться полупрозрачным. При открытии окно будет казаться примерно на 20% больше, чем в начале, и станет непрозрачным.

Как мне это сделать? Один из способов заключается в том, что я мог бы сделать NSWindow на самом деле базовым размером + 20% и, возможно, использовать NSAnimation для анимации представления. Однако это не кажется прямым «хорошим» способом. Как я могу использовать CA для обработки анимации этого окна так, как я описываю? Также открыты для альтернативных решений


person Nektarios    schedule 07.07.2010    source источник
comment
С какой целью? Почему вы создаете подклассы NSWindow? Вы действительно делаете скринсейвер?   -  person mcandre    schedule 07.07.2010
comment
Я не создаю подкласс NSWindow, я устанавливаю его без украшений и устанавливаю высокий уровень, чтобы он отображался поверх всех открытых окон. Это все отлично работает. Я создал подкласс NSView и установил для него contentView, чтобы я мог поместить туда специализированный код рисования для рисования в NSWindow. Это все работает. (не скринсейвер, я делаю заставку загрузки. Однако этот вопрос не относится к этому конкретному использованию)   -  person Nektarios    schedule 07.07.2010


Ответы (1)


Вы можете использовать NSViewAnimation, чтобы изменить размер окна. Вопреки своему названию, он работает как с окнами, так и с представлениями.

Обратите внимание, что я понятия не имею, как выглядят какие-либо эффекты в Windows 7, так как я не использую Windows.

person Peter Hosey    schedule 07.07.2010