2010-01-15 14 views
31

Antes de hacer todo a mano, me gustaría preguntar si hay alguna ayuda para obtener del marco.Convierta las coordenadas entre UIView padre/hijo después de CGAffineTransform

Tengo una UIView que contiene otra UIView con un mapa. El padre UIView tiene algunas leyendas para el mapa. Inicialmente defino algunas coordenadas en la vista del mapa. p.ej. (100, 40) y coloque una pieza de gráficos en la vista principal (como una tachuela en google maps, etc.). La vista principal y la vista secundaria son 300x200 y tienen el mismo origen. Esto significa que (100, 40) es el mismo punto en ambas vistas.

Ahora acerco y muevo el niño UIView (el mapa) usando CGAffineTransform y la coordenada (100, 40) ahora está situada en otro lugar. La vista principal es efectivamente una máscara aquí.

¿Puedo usar CGAffineTransform Matrix u otra parte del marco para calcular e informar a la vista principal dónde ubicar la tachuela ahora que se movió el punto?

es decir (100, 400) en la vista hija en comparación con (100, 40) en la vista primaria, ¿cómo se compara después de la transformación?

Gracias por su sugerencia o ayuda.

La animación del niño UIView

[UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:1.0]; 
    CGAffineTransform transform = CGAffineTransformMakeScale(1.8f, 1.8f); 
    worldMap.transform = transform; 
    worldMap.bounds.origin = newPos; 
    [UIView commitAnimations]; 

Respuesta

69

de -convertPoint:toView:-convertPoint:fromView: y debe trabajar para usted UIView.

+0

Costique es correcto, no es necesario que haga la matriz de matemáticas usted mismo. Tienes todo el sistema de jerarquía de vistas para ayudarte. – NSResponder

+0

respuesta impresionante! – Envil

+0

la respuesta es correcta, pero estaría genial. Si explicó las diferencias de ViewView fromView – Thellimist

Cuestiones relacionadas