2010-05-29 12 views
5

Quiero animar la reducción de una UIView, pero no sobre su centro: sobre un punto diferente.iPhone: escalar UIView sobre un punto específico

Como un tiro en la oscuridad, traté de traducir la vista, escalar y luego traducir de nuevo, usando una serie de CGAffineTransforms. Pero no funciona: todavía se escala sobre el centro.

¿Alguien sabe cómo hacer esto?

Muchas gracias.

Respuesta

12

Añadir el marco cuarzo para su proyecto e importar la cabecera de cuarzo

#import <QuartzCore/QuartzCore.h> 

A continuación, puede establecer el punto de la vista (en torno al cual se basan las animaciones) de anclaje, por ejemplo,

myView.layer.anchorPoint = CGPointMake(0, 0); 

Tenga en cuenta que los puntos son valores entre 0 y 1, con 0,0 siendo la parte superior izquierda en el iPhone

+1

Por favor, considere que marca mi respuesta no es contestado si era útil. – RunLoop

+2

Muchas gracias; esto de hecho funciona Un problema de seguimiento, sin embargo: lo que no dije es que estoy usando la escala para un efecto de "rebote". La vista en cuestión se contrae un poco, luego se expande a su tamaño normal. El uso del enfoque "anchorPoint" reduce la vista de forma adecuada, pero cuando vuelvo a crecer la vista (usando la matriz de identidad para la transformación), la vista completa se ha movido (traducido) un poco. ¿Hay alguna manera de que pueda recuperar esa vista a su ubicación original de manera repetible y ancla independiente del punto? ¡Gracias! –

+0

Lo que podría ser más fácil es simplemente configurar los orígenes y tamaños de su marco de vista para reflejar su punto final y de inicio e incluirlo en una animación. He encontrado que este es un enfoque más fácil. – RunLoop

Cuestiones relacionadas