2011-03-25 11 views
6

Ok, he creado una imagen en Photoshop que se alineará con los botones de mi aplicación, y ahora me gustaría convertirla en la imagen de fondo de mi ventana para que los caracteres en el imagen corresponderá a las teclas de mi aplicación (una pequeña aplicación de demostración de calculadora en la que he estado trabajando)Otorgue a NSWindow una imagen de fondo

Básicamente, en lugar de dar botones de texto como 1,2,3,4, etc. He hecho un 3x3 mapa con números de una fuente diferente solo porque se verá bonita

Lo que estoy teniendo dificultades ahora es que parece que no puedo hacer que la imagen sea el fondo de mi ventana.

Creé un NSImageView y arrastré el archivo de imagen en él, así que puedo verlo ahora, pero no puedo convertirlo en el fondo.

¿Debo hacer una subclase de NSImageView o hay algún método simple?

estoy usando Xcode 4, por cierto

Gracias!

Respuesta

13

creo que debería ser capaz de hacer algo como:

[window setBackgroundColor:[NSColor colorWithPatternImage:[NSImage imageNamed:@"myImage.png"]]]; 
+2

¿Dónde se supone que debe ir esto? Probé mi AppDelegate y 'window' no está definido. al sustituir "ventana" por "[ventana propia]", la aplicación se compiló y ejecutó, pero no pasó nada. – Jeff

+0

Esto no está configurando correctamente mi imagen de fondo, me refiero a que la imagen no se adapta a mi marco de ventana, mucho espacio sin usar. Cómo hacerlo, gracias :) –

7

Esto es algo que una ventana de capa respaldados sería bueno en:

[[window contentView] setWantsLayer:YES]; 
[[window contentView] layer].contents = myImage; 

Creo que tienen una mejor oportunidad de hacer que esto cambie el tamaño sensiblemente (suponiendo que lo necesites) que con un color de patrón.

+0

Funciona muy bien, sin embargo, no cubre el área de la barra de título. ¿Tienes una solución para eso? –

+2

La barra de título no es parte de 'contentView' de la ventana; si también desea utilizarlo, probablemente esté mirando dibujos de ventanas completamente personalizados: http://www.cocoawithlove.com/2008/12/drawing-custom-window-on-mac-os-x.html y estoy bastante seguro de que hay una pregunta o dos aquí en SO al respecto. –

1

Solo para darle más opciones, debe poder [window setContentView:myImageView]. En el archivo .xib, le gustaría agregar sus botones, etc. como subvistas de la vista de la imagen.
No necesariamente recomiendo este enfoque, pero es algo en lo que pensar.

+2

Es una buena idea, incluso puede cambiar la clase de la vista de contenido en el inspector de IB, pero no creo que haya ninguna forma de configurar una vista de imagen (ya sea IK o NS) con las subvistas en IB, lo que significa que tendrías que moverlos en código. –

+1

Sí, pero es más fácil de lo que parece: puede configurar una "vista de hospedaje de vistas" en IB, y luego en el código puede agregar solo * que * ver como subvista a ImageView. – Richard

+1

@Richard: ¡Por supuesto! Buena solución. –