Estoy creando una aplicación iOS que tiene una etiqueta. Quiero establecer dos colores. Uno para la primera parte y otro color para la parte restante.
He visto algunos mensajes en Stack over flow que, TTTAttributedLabel tiene la capacidad de establecer más de un color para el texto. Mi texto será como "ABC> def". Para "ABC", quiero establecer el color marrón y para "def", quiero establecer el color blanco.
¿Cómo puedo configurar eso?iOS - Uso de TTTAttributedLabel para establecer dos colores de texto
8
A
Respuesta
16
NSString* text = @"ABC > def";
attributedLabel = [[[TTTAttributedLabel alloc] initWithFrame:frame] autorelease];
attributedLabel.numberOfLines = 0;
attributedLabel.lineBreakMode = UILineBreakModeWordWrap;
attributedLabel.fontColor = [UIColor brownColor];
[attributedLabel setText:text afterInheritingLabelAttributesAndConfiguringWithBlock:^(NSMutableAttributedString *mutableAttributedString) {
NSRange whiteRange = [text rangeOfString:@"def"];
if (whiteRange.location != NSNotFound) {
// Core Text APIs use C functions without a direct bridge to UIFont. See Apple's "Core Text Programming Guide" to learn how to configure string attributes.
[mutableAttributedString addAttribute:(NSString *)kCTForegroundColorAttributeName value:(id)[UIColor whiteColor].CGColor range:whiteRange];
}
return mutableAttributedString;
}];
[attributedLabel sizeToFit]; //this may not be needed if the frame provided is large enough
Que busca "def" en la cadena y establece el color de primer plano del texto en blanco para ese rango. Espero que esto ayude. Lo acabo de enterar ayer. Me encontré con tu pregunta mientras trataba de resolverlo por mí mismo.
6
Puede usar TTTRegexAttributedLabel disponible en: https://github.com/kwent/TTTRegexAttributedLabel. (TTTAttributedLabel basado pero más fácil de usar con expresiones regulares)
//SET FONT ONLY ON FIRST MATCH REGEX
TTTRegexAttributedLabel *label = [[TTTRegexAttributedLabel alloc] init];
label.textColor = [UIColor whiteColor];
NSString *s = @"ABC > def";
[self.label setText:s withFirstMatchRegex:@"^[a-zA-Z ]*>"
withFont:[UIFont systemFontOfSize:12]
withColor:[UIColor brownColor]];
+4
Gracias por darnos la respuesta. Mi problema se solucionó al usar TTTAttributedLabel. En el futuro, tendré presente utilizar la biblioteca que sugirió. – Satyam
Cuestiones relacionadas
- 1. UILabel con texto de dos colores diferentes
- 2. Bordes de dos colores
- 3. Cómo mostrar texto con fondo de dos colores?
- 4. Dos colores en un campo de texto usando Actionscript 3
- 5. UILabel con el texto de dos colores diferentes
- 6. Uso de colores con printf
- 7. Uso de varios colores de texto en la vista de texto de Android [Html.fromhtml()]
- 8. Cómo establecer TextColor usando SetTextColor (colores) ColorsStateList
- 9. iOS CGPDFScanner para buscar posiciones de texto
- 10. bash, Linux: establecer la diferencia entre dos archivos de texto
- 11. Dos escalas de colores para geom_line en ggplot2
- 12. Android: botón con dos colores de fondo
- 13. banda de fondo con dos colores?
- 14. Uso de colores CMYK en WPF/XAML
- 15. iPhone CGContext: dibujo dos líneas con dos colores diferentes
- 16. Establecer texto para un campo de texto en UIWebView
- 17. el uso de colores en Scala consola
- 18. Ajuste de los colores de un texto JProgressBar
- 19. establecer diferentes colores para cada columna en los gráficos altos
- 20. Uso de python para escribir archivos de texto con terminaciones de línea de DOS en Linux
- 21. Cómo dibujar texto con diferentes colores de trazo y relleno?
- 22. ¿es posible establecer múltiples colores en UILabel?
- 23. Establecer el soporte vim destacando los colores
- 24. Texto de dos líneas para MenuItem
- 25. QTextEdit con diferentes colores de texto (Qt/C++)
- 26. ¿Cómo establecer texto dentro de TextView para estar en dos líneas?
- 27. Uso de estructuras en Objective-C (para iOS): optimización prematura?
- 28. Cómo establecer java-classpath para dos directorios?
- 29. Uso de Thrift en iOS
- 30. Establecer zoom 100% predeterminado para iOS Safari sitio de representación
no olvide devolver mutableAttributedString al final del bloque. – djibouti33
@ djibouti33 gracias, no sé cómo me lo perdí. Editó la respuesta para incluir eso ahora. – DonnaLea