¿Qué hace el control de origen en el generador de interfaces?

En el generador de interfaces hay un control en el inspector de puntales y muelles que tiene el origen labeldo. ¿Qué hace esto y por qué cambiarlo por un object lo cambia por TODOS los objects?

Control de origen

Por lo que puedo decir, no tiene ningún efecto real en el origen del rectángulo del marco, como su nombre lo indica. Dejame explicar:

Al seleccionar una UILabel y cambiar el origen para estar en la parte superior derecha como en la foto de arriba, el origen del marco se ubica en el punto (280,11). Sin embargo, en el código, cuando realmente le pregunta al marco por su origen, se le da como (211,11) lo que corresponde a la esquina superior izquierda del marco. ¡Por lo tanto, cambiar el origen del marco en el generador de interfaces parece no hacer absolutamente nada! ¡¿Que esta pasando aqui?!

No hace nada a less que esté editando los campos inmediatamente adyacentes. Observará que las coorderadas X e Y cambian según el punto de anclaje que select; que está destinado a hacer que sea más fácil para usted alinear el object por su centro o borde.

La razón por la que cambia para todos los objects es que en realidad no afecta nada al object en sí; el sistema de coorderadas "real" permanece igual independientemente de los valores X e Y mostrados allí.

En OS X, como dice Nathan, el sistema de coorderadas tiene su origen en la esquina inferior izquierda y sus coorderadas aumentan hacia arriba y hacia la derecha; en iOS, el origen se encuentra en la parte superior izquierda y sus coorderadas aumentan hacia abajo y hacia la derecha.

Ahora no tengo la respuesta exacta, pero creo que tiene que ver con el código de origen que configuró para ese object (solo un ejemplo)

 - (void) Button { CGRect frame = button.frame; frame.origin.x = 500; // new x coordinate frame.origin.y = 500; // new y coordinate button.frame = frame; } 

Y tal vez hay una manera de establecer frame.origin en una configuration que lo conectaría con la herramienta de origen en InterFace Builder

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaDrawingGuide/Transforms/Transforms.html

Cocoa usa un sistema de coorderadas cartesiano como su model básico para especificar coorderadas. El origen en este sistema se encuentra en la esquina inferior izquierda del espacio de dibujo actual, con valores positivos extendiéndose a lo largo de los ejes hacia arriba y hacia la derecha del punto de origen. El origen raíz de todo el sistema se encuentra en la esquina inferior izquierda de la pantalla que contiene la barra de menus.

Si se vio obligado a dibujar todo su contenido en las coorderadas de la pantalla, el sistema de coorderadas cuyo origen se encuentra en la esquina inferior izquierda de la pantalla principal de la computadora, su código sería bastante complejo. Para simplificar las cosas, Cocoa configura un sistema de coorderadas local cuyo origen es igual al origen de la window o vista que está a punto de dibujar. Las llamadas de dibujo subsiguientes dentro de la window o la vista tienen lugar en relación con este sistema de coorderadas local. Una vez que el código termina de dibujar, Cocoa y el sistema de charts subyacente convierten las coorderadas locales en coorderadas de pantalla para que el contenido pueda ser compuesto con contenido de otras aplicaciones y enviado al hardware de charts.