2010-05-25 13 views
5

Esempio: Ho un CGPoint nella finestra coordinate:Come convertire le coordinate della finestra relative ad una vista specifica?

CGPoint windowPoint = CGPointMake(220.0f, 400.0f); 

C'è aView che ha una superview in un superview in una superview. Da qualche parte in profondità nella gerarchia della vista, probabilmente anche trasformata alcune volte.

Quando si ottiene un UITouch, è possibile chiedere per -locationInView: e restituirà le coordinate relative a tale vista.

Mi serve più o meno la stessa cosa. C'è un modo semplice per farlo?

risposta

11

ho trovato una soluzione molto semplice:

[self.aView convertPoint:windowPoint fromView:self.window]; 
+0

Ci sono diverse routine di conversione come quello fornito da UIView. Sono tutti descritti nella guida di riferimento della classe UIView. http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/instm/UIView/convertPoint:fromView: – progrmr

+0

Pratico trucco se devi questo per un frame rect, ad esempio per l'animazione, è [sourceView convertRect: targetView.bounds fromView: targetView]; non usare targetView.frame o raddoppierai la sua origine. – Hafthor

+0

Puoi usare nil invece di self.window, in questo caso il metodo converte in base alle coordinate della finestra – mt81

0

Forse si potrebbe scorrere l'albero superview, drill-down per subviews per tag, e aggiungere o sottrarre frame.origin i valori della visualizzazione secondaria per arrivare a una tradotto windowPoint relativa alla vista di interessi di frame.origin.

Problemi correlati