2010-02-10 23 views
8

CATransition es bastante inusual. Considera el siguiente código.¿Cómo funciona CATransition?

CATransition* trans=[CATransition animation]; 
trans.duration=0.5; 
trans.type=kCATransitionFade; 
[self.holdingView.layer addAnimation:trans forKey:nil]; 
self.loadingView.hidden=YES; 
self.displayView.hidden=NO; 

en cuenta que hizo la nada que diga la transición que quería mostrar la DisplayView en lugar de loadingView, por lo que los puntos de vista de alguna manera debe tener acceso a la transición a sí mismos. ¿Alguien puede explicar con más detalle cómo funciona esto?

Respuesta

11

Cuando agrega la transición como animación, se inicia una CATransacción implícita. A partir de ese momento, todas las modificaciones de las propiedades de la capa se animarán en lugar de aplicarse de inmediato. La forma en que CATransition realiza esta animación para tomar una instantánea de la vista antes de que cambien las propiedades de la capa, y una instantánea de cómo se verá la vista después de que se cambien las propiedades de la capa. A continuación, utiliza un filtro (en Mac esto es Core Image, pero en el iPhone, supongo que es solo matemática codificada) iterar entre esas dos imágenes a lo largo del tiempo.

Esta es una característica clave de Core Animation. Su lógica de sorteo generalmente no necesita tratar con la animación. Se te da un contexto de gráficos, dibujas, ya has terminado. El sistema maneja la composición con otras imágenes a lo largo del tiempo (o rotándola en el espacio, o lo que sea). Entonces, en el caso de cambiar el estado oculto, la imagen totalmente compuesta del estado inicial se mezcla con la imagen compuesta del estado final. Muy rápido en una GPU, y realmente no importa qué cambio haya realizado en la vista.