awesome - uikit ios
Comprender convertPoint: toView: (1)
Cada UIView tiene su propio sistema de coordenadas. Entonces, si tiene un UIView_1 que contiene otro UIView_2, ambos tienen un punto (10,10) dentro de ellos.
convertPoint: toView: permite al desarrollador tomar un punto en una vista y convertir el punto a otro sistema de coordenadas de vista.
Ejemplo: view1 contiene view2. La esquina superior izquierda de view2 se encuentra en view1 point (10,10), o mejor dicho view2.frame.orgin = {10,10}. Ese {10,10} se basa en el sistema de coordenadas view1. Hasta aquí todo bien.
El usuario toca la vista2 en el punto {20,20} dentro de la vista2. Ahora esas coordenadas están en el sistema de coordenadas view2. Ahora puede usar covertPoint: toView: para convertir {20,20} en el sistema de coordenadas de view1. touchPoint = {20,20}
CGPoint pointInView1Coords = [view2 convertPoint:touchPoint toView:view1];
Entonces, pointInView1Coords debería ser {30,30} en los sistemas de coordenadas view1. Ahora, eso fue solo matemática simple en este ejemplo, pero hay todo tipo de cosas que contribuyen a la conversión. Las transformaciones y escalas vienen a la mente.
Lea sobre el marco, los límites y el centro de UIView. Todos están relacionados y se ocupan de los sistemas de coordenadas para una vista. Es confuso hasta que empiezas a hacer cosas con ellos. Recuerde que este marco y centro están en el sistema de coordenadas del padre. Bounds está en el sistema de coordenadas de la vista.
John
No entiendo muy bien el método convertPoint:toView:
En la documentación de Apple está escrito que
convertPoint:toView:
Convierte un punto del sistema de coordenadas del receptor al de la vista especificada.
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view
Pero, ¿qué significa convertir un punto de uno a otro en realidad?
¿Implica que los puntos en ambos límites tienen unidades diferentes ? ¿O solo valores diferentes?
Si es el último, ¿por qué hay un método así cuando simplemente podemos asignar el valor del contenido de un contentOffset
a b?
CGPoint a = [a contentOffset];
[b setContentOffset:a];
¿Cómo es convertPoint:toView:
diferente de la simple asignación de contentOffset
? ¿O no entendí todo el concepto? ¿Qué significan los puntos de conversión ? ¿Cuándo se debe usar este método?