2009-12-13 15 views

Respuesta

24

Para ampliar lo que dijo Pedro, que se desea utilizar un código como el siguiente:

CGAffineTransform newTransform; 
newTransform = CGAffineTransformMakeRotation(1.57*2); 
((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransformScale(newTransform,.5,.5); 

El CGAffineTransformMake ... crean nuevas funciones transformadas a partir de cero, donde los otros concatenan transforma. Las vistas y las capas solo pueden tener una transformación aplicada a ellas a la vez, así es como se crean múltiples efectos de escala, rotación y traducción en una vista a la vez.

Debe tener cuidado con el orden en que las transformaciones se concatenan para lograr el efecto correcto.

2

Solo uno de estos funciona a la vez.

Derecho, porque reemplazó el primero con el segundo.

¿Cómo puedo guardar una transformación y luego aplicar otra?

Concatenate them together, y asigne la matriz resultante a la propiedad.

Puede almacenar una matriz de transformación en una variable del tipo CGAffineTransform; puede usarlo para pasos intermedios en transformaciones más complejas, o para hacer que el código sea más claro (o ambos).

9

A partir de la documentación de Apple:

CGAffineTransformConcat Devuelve una matriz de transformación afín construida mediante la combinación de dos transformaciones afines existentes.

CGAffineTransform CGAffineTransformConcat (
    CGAffineTransform t1, 
    CGAffineTransform t2 
); 

Parámetros T1 La primera afín transformación.

t2 La segunda transformación afín. Esta transformada afín se concatena a la primera transformación afín.

Valor de retorno Una nueva matriz de transformación afín . Es decir, t '= t1 * t2.

Discusión La concatenación combina dos matrices afines de transformación por multiplicándolas. Puede realizar varias concatenaciones en para crear una sola transformada afín que contiene los efectos acumulativos de varias transformaciones.

Tenga en cuenta que las operaciones con matrices no son conmutativo: el orden en el que se matrices concatenar es importante. Esto es, el resultado de multiplicar matriz t1 t2 por matriz no necesariamente igual al resultado de multiplicar t2 matriz por t1 matriz.

+0

Gracias a todos. ¡Acabo de sacar todo el CGAFfineTransform y funciona genial! – quantumpotato

Cuestiones relacionadas