Configuración del color del color de fondo / culminante para una gama determinada cadena de texto utilizando Core

StackOverflow https://stackoverflow.com/questions/4498918

Pregunta

Tengo un poco de texto dispuesto utilizando Core texto en mi aplicación para el iPhone. Estoy usando NSAttributedString para establecer ciertos estilos dentro del texto para la escala de precios.

Me parece que no puede encontrar un atributo para establecer un color de fondo / destacado, sin embargo, parecería que es posible. No pude encontrar una constante del nombre de atributo que sonaba relevante y la documentación sólo listas:

kCTCharacterShapeAttributeName
kCTFontAttributeName
kCTKernAttributeName
kCTLigatureAttributeName
kCTForegroundColorAttributeName
kCTForegroundColorFromContextAttributeName
kCTParagraphStyleAttributeName
kCTStrokeWidthAttributeName
kCTStrokeColorAttributeName
kCTSuperscriptAttributeName
kCTUnderlineColorAttributeName
kCTUnderlineStyleAttributeName
kCTVerticalFormsAttributeName
kCTGlyphInfoAttributeName
kCTRunDelegateAttributeName

Craig Hockenberry, desarrollador de Twitterrific ha dicho públicamente en Twitter que utiliza Core texto para hacer que los tweets, y Twitterrific tiene este fondo / resaltado que estoy hablando cuando se toca un enlace.

text alt

Cualquier ayuda o punteros en la dirección correcta sería fantástico, gracias.

Editar Aquí hay un enlace que el tweet Craig ha escrito mencionando "texto Core, cuerdas y un montón de trabajo duro atribuye", y el seguimiento que menciona el uso de CTFrameSetter métricas de averiguar si se cruzan con toques enlaces.

¿Fue útil?

Solución

Al final, tuve que usar los métodos de métricas de texto básico (obtener la gama, límites, orígenes de líneas, etc.) para calcular el rectángulo de delimitación del enlace. Una vez tuve un rect para cada línea se extendió por el enlace, me atrajo el fondo en el contexto antes de volver a dibujar el texto por encima de ella.

Parece un infierno de un montón de trabajo, pero funciona.

Otros consejos

Con iOS 6, creo que se puede conseguir el efecto que buscas con: NSBackgroundColorAttributeName. Tales como:

[attributedString addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:selectedRange];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top