2011-01-16 19 views
5

Tengo un NSImageView y quiero agregar una sombra. He intentado hacerlo programáticamente con:Agregar una sombra a un NSImageView

NSShadow *shadow = [[[NSShadow alloc] init] autorelease]; 
[shadow setShadowBlurRadius:4.0f]; 
[shadow setShadowOffset:CGSizeMake(4.0f, 4.0f)]; 
[shadow setShadowColor:[NSColor blackColor]]; 

[view setShadow:shadow]; 

Pero no aparecerá. ¿Algunas ideas? Gracias.

+0

Puede intentar crear un NSImage vacío (del mismo tamaño que el que desea dibujar), 'lockFocus' en él, establecer la sombra y dibujar el original en el nuevo (y' unlockFocus'). Yo uso esa técnica para teñir imágenes; no puede garantizar que funcionará para la sombra. – Richard

Respuesta

9

Tiene que establecer los parámetros de la sombra. Por defecto, es todo ceros, por lo que no tiene efecto visible en una vista.

Ver -setShadowColor:, -setShadowRadius:, y -setShadowOffset: en NSShadow, creo.

+0

Intenté agregar todo lo anterior sin ningún efecto. Actualicé la muestra anterior. –

+2

¿Su vista también está respaldada por un 'CALayer'? De lo contrario, debe habilitar el respaldo de Core Animation enviando 'setWantsLayer:' (con un valor de 'YES') a su vista antes de configurar la sombra. –

+0

@Jonathan: eso era lo que estaba a punto de publicar como una respuesta. 'setShadow:' simplemente copia las propiedades de la sombra a la capa Core Animation, por lo que la vista debe estar respaldada por un 'CALayer'. Esto también se nota cuando quiere aplicar una sombra a una vista usando Interface Builder. – Joost

Cuestiones relacionadas