2012-09-13 11 views
5

Estoy creando programáticamente un NSWindow y los controles en él.Cacao: Origen de NSView x en la parte inferior

Parece que el origen (0,0) está en la esquina inferior izquierda. Esto es extraño para mí (proveniente de otros kits de herramientas GUI). ¿Hay alguna bandera más o menos así que puedo cambiar esto para que el origen esté en la esquina superior izquierda?

Respuesta

10

En OS X, el origen está en la esquina inferior izquierda. Eso es cierto para coordenadas de pantalla y marcos de vista. Puede anular isFlipped: en una subclase NSView y devolver SÍ para hacer que la esquina superior izquierda sea el origen de esa vista, pero no creo que haya una manera de hacer lo mismo para las coordenadas de pantalla.

+3

Bueno, sí, eso es lo que también he investigado hasta ahora. ¿Pero no hay una manera más fácil? Además, ¿todos los que quieran hacer esto siempre deben reinventar la clase 'NSFlippedView' que es simplemente' NSView' con 'isFlipped' que devuelve' SÍ'? – Albert

+0

Creo que en la mayoría de los casos, la solución más fácil es revertir las matemáticas. Es molesto si vienes de la programación de iOS, pero no es tan difícil. – DrummerB

+0

En [documentos de Cocoa] (http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/CocoaDrawingGuide/Transforms/Transforms.html), dice: "Si planea dibujar todos sus el contenido de vista utilizando coordenadas volteadas, anulando el método isFlipped de la vista es, de lejos, la opción preferida ". – Albert

Cuestiones relacionadas