2009-09-14 2 views
7

Я работаю над приложением Snow Leopard, и я занимаюсь анимацией вида (меняя их), и я видел несколько старых примеров, использующих NSViewAnimation. Мне интересно, если они полностью устарели Core Animation?Любые причины использования методов NSViewAnimation по CoreAnimation?

Это кажется довольно простым для меня, чтобы использовать

[[myView animator] setFrame:newSwapFrame]; 

Но я просто интересно, если я что-то отсутствует, или если NSViewAnimation еще актуальна (кроме как для обратной совместимости).

ответ

5

Как правило, вы должны перейти к Core Animation для кода 10.5+. NSViewAnimation довольно примитивен и не обеспечивает эффективное использование аппаратного обеспечения. Я не могу думать о преимуществах пребывания с NSViewAnimation, кроме совместимости с 10.4.

3

Есть случаи, когда Core Animation не подходит. Например, вы не можете поместить WebView в слой с поддержкой просмотра без напуганных вещей.

Кроме того, текстовые поля в виде слоев с обратной подсветкой не используют субпиксельное сглаживание, которое может быть прерыванием транзакции.

Если вы не используете образы с поддержкой слоев, ваш пример использования поддержки анимационных свойств определенно проще, чем использование NSAnimation.

+0

Как я уже более опытен в UIKit и его методах анимации, в чем разница на Mac между использованием представлений с поддержкой Layer и просто использованием «аниматора» представления? – jbrennan

+1

Прокси-сервер аниматора не имеет ничего общего с CoreAnimation. Поддержка NSView, поддерживаемая некластерами, поддерживает его примерно так же, как и просмотры с поддержкой слоев. – kperryua

+2

В качестве примечания, текстовые поля в представлениях с поддержкой слоев могут использовать подпиксельное сглаживание. Вам необходимо установить фоновой цвет текстового поля на непрозрачный цвет и установить для свойства drawsBackground значение YES. См. Здесь: http://www.cocoabuilder.com/archive/message/cocoa/2008/3/28/202581 –

0

Если вам нужно получить снимок экрана позже (например, чтобы сделать переходную анимацию между двумя состояниями окна), Core Animated views (view with CAAnimation) может не быть захвачен. Но CAAnimation всегда работает быстро, и NSAnimation может замедляться, если процессор слишком занят.