2009-11-18 21 views
14

Me gustaría crear una barra de estado con efecto de texto como en Safari o iTunes, es decir, texto en receso.Añadir sombra (efecto de texto oculto) a la etiqueta Cocoa sin degradar la calidad de representación del texto

example

Sin embargo, si simplemente añadir a la sombra en el Interface Builder mediante el panel de Core Animation, peores patadas representación de texto de OS X en:

wheres my subpixel

¿Cuál es el truco para obtener el texto empotradas en una la etiqueta y mantienen la representación subpixel adecuada?

Respuesta

35

No es una forma integrada de hacer esto:

[[yourTextField cell] setBackgroundStyle:NSBackgroundStyleRaised]; 
+1

¿Hay alguna manera de editar el color de resaltado de esto? – coneybeare

+0

No lo creo, esto es manejado internamente por el sistema. Tendrá que escribir su propio código de dibujo para cambiarlo. –

6

Es un viejo truco barato: dibuja el texto en blanco en una compensación y luego dibuja el texto negro en la parte superior.

Hay un gancho para sombras en el sistema de dibujo de texto, NSShadowAttributeName de NSAttributedString. Pero al probar esto, parece que también elimina el antialiasing de píxel.

+0

+1 hace un montón de sentido. Buena esa. –

+2

¿No hay una mejor solución? Una de las numerosas API de texto de OS X debe hacerlo correctamente ... No quiero agregar otra etiqueta, ya que será más difícil mantenerla y probablemente sea molesto para los usuarios de Voice Over. – Kornel

+1

La respuesta se refería al dibujo de texto adicional, no necesariamente a la adición de una etiqueta adicional. Puede crear una subclase personalizada de NSTextField con código de dibujo personalizado. Entonces, solo necesitas una etiqueta. –

Cuestiones relacionadas