2011-06-15 11 views
9

Me pregunto si de todos modos puede obtener la ubicación absoluta de un control en una aplicación de ipad/iphone. p.ej. Tengo un TextField que está dentro de un elemento secundario de un elemento secundario de una vista. Quiero saber los valores X e Y en relación con la vista principal superior (por ejemplo, actualmente la x y la Y del campo de texto devuelven 10 y 10 porque esa es su ubicación dentro de su propia vista, pero quiero saber esto en relación con su padre, que debería ser algo así como X = 10 e Y = 220). Necesito hacer un método genérico para esto de alguna manera. Espero que esto tenga sentido.Obtener la ubicación absoluta de cualquier control en el objetivo C IPad App

¿Alguna idea?

Respuesta

28

Está buscando -[UIView convertPoint:toView:].

Por ejemplo, para obtener el origen de una vista view en términos de coordenadas base de su ventana, podría escribir:

CGPoint localPoint = [view bounds].origin; 
CGPoint basePoint = [view convertPoint:localPoint toView:nil]; 

Si por el contrario desea convertir el punto en el sistema de coordenadas de algún otro punto de vista dentro de la misma ventana, puede utilizar este punto de vista como argumento toView: en lugar de nil:

NSAssert([view window] == [otherView window], 
     @"%s: Views must be part of the same window.", __func__); 
CGPoint otherPoint = [view convertPoint:localPoint toView:otherView]; 

Debido a que diferentes sistemas de coordenadas pueden tener diferentes escalas, es posible encontrar -convertRect:toView: para ser más útil, dependiendo de lo que planeas hacer con las coordenadas. También hay versiones análogas de -fromView: de los métodos de conversión de punto y rect.

+1

¿Qué sucede si no sabe/tiene acceso a la vista que contiene el punto? –

Cuestiones relacionadas