El dibujo en NSTextField
-
21-09-2019 - |
Pregunta
Si desea implementar un resaltado de subseries específicas en un NSTextField
como en la captura de pantalla (Tweetie.app) ¿cómo hacerlo? :)
Tweetie Enlace Destacando http://qkpic.com/88c61
Gracias por su ayuda!
Solución
Para un NSTextField, tenga en cuenta que se trata de un NSTextFieldCell que hace el dibujo. Usted querrá anular -drawInteriorWithFrame: inView: y hacer la cadena de dibujo sí mismo. El reto será encontrar los rectángulos (más de uno si el rango se envuelve) en el que se basa en nuestros subcadena. Usted va a terminar encima de tener que utilizar NSLayoutManager y un contenedor NSTextStorage.
Lo mejor es utilizar un NSTextView. Los componentes asociados NSLayoutManager y NSTextStorage ya están pre-ensamblados y se obtiene una gran cantidad de otras funciones de forma gratuita. Lo más importante es que hay un cómodo - [NSTextView drawViewBackgroundInRect:] método por lo que no tiene que nada subclase. Le preguntas a la vista del texto para su controlador de distribución y almacenamiento de texto, a continuación, pedir por los rectángulos para el rango dado. Ver las de texto Descripción general del sistema y vinculados documentos para más detalles.
Para encontrar las subseries interesantes de manera eficiente, es posible utilizar atributos personalizados (o las incorporadas tales como NSLinkAttributeName) para sus gamas interesantes.
Otros consejos
Una alternativa a considerar es una vista web editable donde se puede construir los atributos personalizados con CSS.