2009-09-14 22 views
7

Estoy trabajando en una aplicación Snow Leopard y estoy haciendo algunas animaciones de visualización (intercambiándolas) y he visto algunos ejemplos anteriores usando NSViewAnimation. Me pregunto si están completamente obsoletos por Core Animation.¿Alguna razón para usar NSViewAnimation sobre las técnicas de CoreAnimation?

Parece bastante simple para mí utilizar

[[myView animator] setFrame:newSwapFrame]; 

Pero me pregunto si me falta algo, o si NSViewAnimation es todavía relevante (que no sean para la compatibilidad hacia atrás).

Respuesta

5

En general, debe pasar a Core Animation para obtener el código 10.5+. NSViewAnimation es bastante primitivo y no hace un uso tan eficiente del hardware. No puedo pensar en ninguna ventaja de permanecer con NSViewAnimation que no sea la compatibilidad 10.4.

3

Hay algunos casos donde Core Animation no es adecuado. Por ejemplo, no puede poner un WebView en una vista de capa de respaldo sin que sucedan cosas originales.

Además, los campos de texto en las vistas respaldadas por capa no usan antialias de subpixel, lo que puede ser un factor decisivo.

Si no está utilizando vistas respaldadas por capas, entonces su ejemplo de simplemente usar la compatibilidad de propiedades animables es definitivamente más fácil que usar NSAnimation.

+0

Como tengo mucha más experiencia con UIKit y sus técnicas de animación, ¿cuál es la diferencia en Mac entre el uso de vistas respaldadas por capas y simplemente el uso del 'animator' de una vista? – jbrennan

+1

El proxy del animador no tiene nada que ver con CoreAnimation. Un NSView sin respaldo de capa lo admite casi tan bien como lo hacen las vistas respaldadas por capa. – kperryua

+2

Como nota, los campos de texto en las vistas respaldadas por capa pueden usar antialiasing de subpixel. Debe establecer el color de fondo del campo de texto en un color opaco y establecer la propiedad drawsBackground en SÍ. Vea aquí: http://www.cocoabuilder.com/archive/message/cocoa/2008/3/28/202581 –

0

Si necesita obtener una captura de pantalla de la ventana más tarde (como ejemplo, para hacer una animación de transición entre dos estados de ventana), las vistas animadas principales (ver con CAAnimation) pueden no ser capturadas. Pero CAAnimation siempre está trabajando rápido, y NSAnimation puede ralentizarse si la CPU está demasiado ocupada.

Cuestiones relacionadas