ios ios4 nsattributedstring textcolor

ios - ¿Cómo usas NSAttributedString?



ios4 textcolor (15)

Creo que es una forma muy conveniente de usar regular expressions para encontrar un rango para aplicar atributos. Así es como lo hice:

NSMutableAttributedString *goodText = [[NSMutableAttributedString alloc] initWithString:articleText]; NSRange range = [articleText rangeOfString:@"//[.+?//]" options:NSRegularExpressionSearch|NSCaseInsensitiveSearch]; if (range.location != NSNotFound) { [goodText addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Georgia" size:16] range:range]; [goodText addAttribute:NSForegroundColorAttributeName value:[UIColor brownColor] range:range]; } NSString *regEx = [NSString stringWithFormat:@"%@.+?//s", [self.article.titleText substringToIndex:0]]; range = [articleText rangeOfString:regEx options:NSRegularExpressionSearch|NSCaseInsensitiveSearch]; if (range.location != NSNotFound) { [goodText addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Georgia-Bold" size:20] range:range]; [goodText addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:range]; } [self.textView setAttributedText:goodText];

Estaba buscando una lista de atributos disponibles y no los encontré aquí ni en la primera página de una referencia de clase. Así que decidí publicar aquí información sobre eso.

Atributos Estándar

Las cadenas atribuidas admiten los siguientes atributos estándar para texto. Si la clave no está en el diccionario, use los valores predeterminados que se describen a continuación.

NSString *NSFontAttributeName; NSString *NSParagraphStyleAttributeName; NSString *NSForegroundColorAttributeName; NSString *NSUnderlineStyleAttributeName; NSString *NSSuperscriptAttributeName; NSString *NSBackgroundColorAttributeName; NSString *NSAttachmentAttributeName; NSString *NSLigatureAttributeName; NSString *NSBaselineOffsetAttributeName; NSString *NSKernAttributeName; NSString *NSLinkAttributeName; NSString *NSStrokeWidthAttributeName; NSString *NSStrokeColorAttributeName; NSString *NSUnderlineColorAttributeName; NSString *NSStrikethroughStyleAttributeName; NSString *NSStrikethroughColorAttributeName; NSString *NSShadowAttributeName; NSString *NSObliquenessAttributeName; NSString *NSExpansionAttributeName; NSString *NSCursorAttributeName; NSString *NSToolTipAttributeName; NSString *NSMarkedClauseSegmentAttributeName; NSString *NSWritingDirectionAttributeName; NSString *NSVerticalGlyphFormAttributeName; NSString *NSTextAlternativesAttributeName;

Guía de programación de NSAttributedString

Una referencia completa de la clase está here .

Los colores múltiples en una NSString o NSMutableStrings no son posibles. Así que escuché un poco sobre el NSAttributedString que se introdujo con el iPad SDK 3.2 (o alrededor de 3.2) y está disponible en el iPhone a partir del iPhone SDK 4.0 beta .

Me gustaría tener una cadena que tiene tres colores.

La razón por la que no uso 3 NSStrings separados, es porque la longitud de cada una de las tres subcadenas NSAttributedString cambia con frecuencia y, por lo tanto, preferiría no usar ningún cálculo para volver a colocar 3 objetos NSString separados.

Si es posible usar NSAttributedString ¿cómo hago lo siguiente? (Si no es posible con la cadena NSAttributed, ¿cómo lo haría?)

Edición: recuerde, @"first" , @"second" y @"third" serán reemplazados por otras cadenas en cualquier momento. Por lo tanto, usar valores codificados de NSRange no funcionará.


Cuando construyo cadenas atribuidas, prefiero usar la subclase mutable, solo para mantener las cosas más limpias.

Dicho esto, aquí se muestra cómo se crea una cadena con tres colores:

NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:@"firstsecondthird"]; [string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,5)]; [string addAttribute:NSForegroundColorAttributeName value:[UIColor greenColor] range:NSMakeRange(5,6)]; [string addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(11,5)];

escribió en un navegador. implementador de advertencia

Obviamente no vas a codificar en los rangos como este. Quizás en su lugar podrías hacer algo como:

NSDictionary * wordToColorMapping = ....; //an NSDictionary of NSString => UIColor pairs NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:@""]; for (NSString * word in wordToColorMapping) { UIColor * color = [wordToColorMapping objectForKey:word]; NSDictionary * attributes = [NSDictionary dictionaryWithObject:color forKey:NSForegroundColorAttributeName]; NSAttributedString * subString = [[NSAttributedString alloc] initWithString:word attributes:attributes]; [string appendAttributedString:subString]; [subString release]; } //display string


Desde iOS 7 puedes usar NSAttributedString con sintaxis HTML:

NSURL *htmlString = [[NSBundle mainBundle] URLForResource: @"string" withExtension:@"html"]; NSAttributedString *stringWithHTMLAttributes = [[NSAttributedString alloc] initWithFileURL:htmlString options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType} documentAttributes:nil error:nil]; textView.attributedText = stringWithHTMLAttributes;// you can use a label also

Debe agregar el archivo "string.html" a su proyecto, y el contenido del html puede ser así:

<html> <head> <style type="text/css"> body { font-size: 15px; font-family: Avenir, Arial, sans-serif; } .red { color: red; } .green { color: green; } .blue { color: blue; } </style> </head> <body> <span class="red">first</span><span class="green">second</span><span class="blue">third</span> </body> </html>

Ahora, puedes usar NSAttributedString como quieras, incluso sin archivo HTML, como por ejemplo:

//At the top of your .m file #define RED_OCCURENCE -red_occurence- #define GREEN_OCCURENCE -green_occurence- #define BLUE_OCCURENCE -blue_occurence- #define HTML_TEMPLATE @"<span style=/"color:red/">-red_occurence-</span><span style=/"color:green/">-green_occurence-</span><span style=/"color:blue/">-blue_occurence-</span></body></html>" //Where you need to use your attributed string NSString *string = [HTML_TEMPLATE stringByReplacingOccurrencesOfString:RED_OCCURENCE withString:@"first"] ; string = [string stringByReplacingOccurrencesOfString:GREEN_OCCURENCE withString:@"second"]; string = [string stringByReplacingOccurrencesOfString:BLUE_OCCURENCE withString:@"third"]; NSData* cData = [string dataUsingEncoding:NSUTF8StringEncoding]; NSAttributedString *stringWithHTMLAttributes = [[NSAttributedString alloc] initWithData:cData options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType} documentAttributes:nil error:nil]; textView.attributedText = stringWithHTMLAttributes;

Source


En Swift 4:

let string:NSMutableAttributedString = { let mutableString = NSMutableAttributedString(string: "firstsecondthird") mutableString.addAttribute(NSForegroundColorAttributeName, value: UIColor.red , range: NSRange(location: 0, length: 5)) mutableString.addAttribute(NSForegroundColorAttributeName, value: UIColor.green , range: NSRange(location: 5, length: 6)) mutableString.addAttribute(NSForegroundColorAttributeName, value: UIColor.blue , range: NSRange(location: 11, length: 5)) return mutableString }() print(string)


Escribí helper para agregar atributos fácilmente:

- (void)addColor:(UIColor *)color substring:(NSString *)substring; - (void)addBackgroundColor:(UIColor *)color substring:(NSString *)substring; - (void)addUnderlineForSubstring:(NSString *)substring; - (void)addStrikeThrough:(int)thickness substring:(NSString *)substring; - (void)addShadowColor:(UIColor *)color width:(int)width height:(int)height radius:(int)radius substring:(NSString *)substring; - (void)addFontWithName:(NSString *)fontName size:(int)fontSize substring:(NSString *)substring; - (void)addAlignment:(NSTextAlignment)alignment substring:(NSString *)substring; - (void)addColorToRussianText:(UIColor *)color; - (void)addStrokeColor:(UIColor *)color thickness:(int)thickness substring:(NSString *)substring; - (void)addVerticalGlyph:(BOOL)glyph substring:(NSString *)substring;

https://github.com/shmidt/MASAttributes

También puede instalar a través de CocoaPods: pod ''MASAttributes'', ''~> 1.0.0''


Esta solución funcionará para cualquier longitud

NSString *strFirst = @"Anylengthtext"; NSString *strSecond = @"Anylengthtext"; NSString *strThird = @"Anylengthtext"; NSString *strComplete = [NSString stringWithFormat:@"%@ %@ %@",strFirst,strSecond,strThird]; NSMutableAttributedString *attributedString =[[NSMutableAttributedString alloc] initWithString:strComplete]; [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:[strComplete rangeOfString:strFirst]]; [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor yellowColor] range:[strComplete rangeOfString:strSecond]]; [attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:[strComplete rangeOfString:strThird]]; self.lblName.attributedText = attributedString;


Hice una biblioteca que hace esto mucho más fácil. Echa un vistazo a ZenCopy.

Puede crear objetos de estilo y / o establecerlos como claves para consultarlos más adelante. Me gusta esto:

ZenCopy.manager.config.setStyles { return [ "token": Style( color: .blueColor(), // optional // fontName: "Helvetica", // optional fontSize: 14 // optional ) ] }

Luego, puedes construir cadenas fácilmente y estilizarlas Y tener parámetros :)

label.attributedText = attributedString( ["$0 ".style("token") "is dancing with ", "$1".style("token")], args: ["JP", "Brock"] )

¡También puedes estilizar las cosas fácilmente con búsquedas de expresiones regulares!

let atUserRegex = "(@[A-Za-z0-9_]*)" mutableAttributedString.regexFind(atUserRegex, addStyle: "token")

Esto estilizará todas las palabras con ''@'' delante de él con el estilo ''token''. (por ejemplo, @jpmcglone)

Necesito seguir funcionando con todo lo que NSAttributedString tiene para ofrecer, pero creo que fontName , fontSize y color cubren la mayor parte. Espera muchas actualizaciones pronto :)

Puedo ayudarte a comenzar con esto si lo necesitas. También busco comentarios, así que si te hace la vida más fácil, diría que misión cumplida.


La pregunta ya está respondida ... pero quería mostrar cómo agregar sombras y cambiar la fuente con NSAttributedString también, para que cuando la gente busque este tema no tenga que seguir buscando.

#define FONT_SIZE 20 #define FONT_HELVETICA @"Helvetica-Light" #define BLACK_SHADOW [UIColor colorWithRed:40.0f/255.0f green:40.0f/255.0f blue:40.0f/255.0f alpha:0.4f] NSString*myNSString = @"This is my string./nIt goes to a second line."; NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.alignment = NSTextAlignmentCenter; paragraphStyle.lineSpacing = FONT_SIZE/2; UIFont * labelFont = [UIFont fontWithName:FONT_HELVETICA size:FONT_SIZE]; UIColor * labelColor = [UIColor colorWithWhite:1 alpha:1]; NSShadow *shadow = [[NSShadow alloc] init]; [shadow setShadowColor : BLACK_SHADOW]; [shadow setShadowOffset : CGSizeMake (1.0, 1.0)]; [shadow setShadowBlurRadius : 1]; NSAttributedString *labelText = [[NSAttributedString alloc] initWithString : myNSString attributes : @{ NSParagraphStyleAttributeName : paragraphStyle, NSKernAttributeName : @2.0, NSFontAttributeName : labelFont, NSForegroundColorAttributeName : labelColor, NSShadowAttributeName : shadow }];

Aquí está una versión Swift ...

¡Advertencia! Esto funciona para 4s.

Para 5s, tienes que cambiar todos los valores de Flotante a Valores Dobles (porque el compilador todavía no funciona correctamente)

Enumeración rápida para la elección de la fuente:

enum FontValue: Int { case FVBold = 1 , FVCondensedBlack, FVMedium, FVHelveticaNeue, FVLight, FVCondensedBold, FVLightItalic, FVUltraLightItalic, FVUltraLight, FVBoldItalic, FVItalic }

Matriz rápida para el acceso a la enumeración (necesaria porque la enumeración no puede usar ''-''):

func helveticaFont (index:Int) -> (String) { let fontArray = [ "HelveticaNeue-Bold", "HelveticaNeue-CondensedBlack", "HelveticaNeue-Medium", "HelveticaNeue", "HelveticaNeue-Light", "HelveticaNeue-CondensedBold", "HelveticaNeue-LightItalic", "HelveticaNeue-UltraLightItalic", "HelveticaNeue-UltraLight", "HelveticaNeue-BoldItalic", "HelveticaNeue-Italic", ] return fontArray[index] }

Función de texto atribuido Swift:

func myAttributedText (myString:String, mySize: Float, myFont:FontValue) -> (NSMutableAttributedString) { let shadow = NSShadow() shadow.shadowColor = UIColor.textShadowColor() shadow.shadowOffset = CGSizeMake (1.0, 1.0) shadow.shadowBlurRadius = 1 let paragraphStyle = NSMutableParagraphStyle.alloc() paragraphStyle.lineHeightMultiple = 1 paragraphStyle.lineBreakMode = NSLineBreakMode.ByWordWrapping paragraphStyle.alignment = NSTextAlignment.Center let labelFont = UIFont(name: helveticaFont(myFont.toRaw()), size: mySize) let labelColor = UIColor.whiteColor() let myAttributes :Dictionary = [NSParagraphStyleAttributeName : paragraphStyle, NSKernAttributeName : 3, // (-1,5) NSFontAttributeName : labelFont, NSForegroundColorAttributeName : labelColor, NSShadowAttributeName : shadow] let myAttributedString = NSMutableAttributedString (string: myString, attributes:myAttributes) // add new color let secondColor = UIColor.blackColor() let stringArray = myString.componentsSeparatedByString(" ") let firstString: String? = stringArray.first let letterCount = countElements(firstString!) if firstString { myAttributedString.addAttributes([NSForegroundColorAttributeName:secondColor], range:NSMakeRange(0,letterCount)) } return myAttributedString }

Primera y última extensión utilizada para encontrar rangos en una matriz de cadenas:

extension Array { var last: T? { if self.isEmpty { NSLog("array crash error - please fix") return self [0] } else { return self[self.endIndex - 1] } } } extension Array { var first: T? { if self.isEmpty { NSLog("array crash error - please fix") return self [0] } else { return self [0] } } }

nuevos colores:

extension UIColor { class func shadowColor() -> UIColor { return UIColor(red: 0.0/255.0, green: 0.0/255.0, blue: 0.0/255.0, alpha: 0.3) } class func textShadowColor() -> UIColor { return UIColor(red: 50.0/255.0, green: 50.0/255.0, blue: 50.0/255.0, alpha: 0.5) } class func pastelBlueColor() -> UIColor { return UIColor(red: 176.0/255.0, green: 186.0/255.0, blue: 255.0/255.0, alpha: 1) } class func pastelYellowColor() -> UIColor { return UIColor(red: 255.0/255.0, green: 238.0/255.0, blue: 140.0/255.0, alpha: 1) } }

mi macro reemplazo:

enum MyConstants: Float { case CornerRadius = 5.0 }

Mi fabricante de botones con texto atribuido:

func myButtonMaker (myView:UIView) -> UIButton { let myButton = UIButton.buttonWithType(.System) as UIButton myButton.backgroundColor = UIColor.pastelBlueColor() myButton.showsTouchWhenHighlighted = true; let myCGSize:CGSize = CGSizeMake(100.0, 50.0) let myFrame = CGRectMake(myView.frame.midX - myCGSize.height,myView.frame.midY - 2 * myCGSize.height,myCGSize.width,myCGSize.height) myButton.frame = myFrame let myTitle = myAttributedText("Button",20.0,FontValue.FVLight) myButton.setAttributedTitle(myTitle, forState:.Normal) myButton.layer.cornerRadius = myButton.bounds.size.width / MyConstants.CornerRadius.toRaw() myButton.setTitleColor(UIColor.whiteColor(), forState: .Normal) myButton.tag = 100 myButton.bringSubviewToFront(myView) myButton.layerGradient() myView.addSubview(myButton) return myButton }

Mi creador de UIView / UILabel con texto atribuido, sombra y esquinas redondeadas:

func myLabelMaker (myView:UIView) -> UIView { let myFrame = CGRectMake(myView.frame.midX / 2 , myView.frame.midY / 2, myView.frame.width/2, myView.frame.height/2) let mylabelFrame = CGRectMake(0, 0, myView.frame.width/2, myView.frame.height/2) let myBaseView = UIView() myBaseView.frame = myFrame myBaseView.backgroundColor = UIColor.clearColor() let myLabel = UILabel() myLabel.backgroundColor=UIColor.pastelYellowColor() myLabel.frame = mylabelFrame myLabel.attributedText = myAttributedText("This is my String",20.0,FontValue.FVLight) myLabel.numberOfLines = 5 myLabel.tag = 100 myLabel.layer.cornerRadius = myLabel.bounds.size.width / MyConstants.CornerRadius.toRaw() myLabel.clipsToBounds = true myLabel.layerborders() myBaseView.addSubview(myLabel) myBaseView.layerShadow() myBaseView.layerGradient() myView.addSubview(myBaseView) return myLabel }

sombra genérica añadir:

func viewshadow<T where T: UIView> (shadowObject: T) { let layer = shadowObject.layer let radius = shadowObject.frame.size.width / MyConstants.CornerRadius.toRaw(); layer.borderColor = UIColor.whiteColor().CGColor layer.borderWidth = 0.8 layer.cornerRadius = radius layer.shadowOpacity = 1 layer.shadowRadius = 3 layer.shadowOffset = CGSizeMake(2.0,2.0) layer.shadowColor = UIColor.shadowColor().CGColor }

ver la extensión para ver el estilo:

extension UIView { func layerborders() { let layer = self.layer let frame = self.frame let myColor = self.backgroundColor layer.borderColor = myColor.CGColor layer.borderWidth = 10.8 layer.cornerRadius = layer.borderWidth / MyConstants.CornerRadius.toRaw() } func layerShadow() { let layer = self.layer let frame = self.frame layer.cornerRadius = layer.borderWidth / MyConstants.CornerRadius.toRaw() layer.shadowOpacity = 1 layer.shadowRadius = 3 layer.shadowOffset = CGSizeMake(2.0,2.0) layer.shadowColor = UIColor.shadowColor().CGColor } func layerGradient() { let layer = CAGradientLayer() let size = self.frame.size layer.frame.size = size layer.frame.origin = CGPointMake(0.0,0.0) layer.cornerRadius = layer.bounds.size.width / MyConstants.CornerRadius.toRaw(); var color0 = CGColorCreateGenericRGB(250.0/255, 250.0/255, 250.0/255, 0.5) var color1 = CGColorCreateGenericRGB(200.0/255, 200.0/255, 200.0/255, 0.1) var color2 = CGColorCreateGenericRGB(150.0/255, 150.0/255, 150.0/255, 0.1) var color3 = CGColorCreateGenericRGB(100.0/255, 100.0/255, 100.0/255, 0.1) var color4 = CGColorCreateGenericRGB(50.0/255, 50.0/255, 50.0/255, 0.1) var color5 = CGColorCreateGenericRGB(0.0/255, 0.0/255, 0.0/255, 0.1) var color6 = CGColorCreateGenericRGB(150.0/255, 150.0/255, 150.0/255, 0.1) layer.colors = [color0,color1,color2,color3,color4,color5,color6] self.layer.insertSublayer(layer, atIndex: 2) } }

La vista real cargó la función:

func buttonPress (sender:UIButton!) { NSLog("%@", "ButtonPressed") } override func viewDidLoad() { super.viewDidLoad() let myLabel = myLabelMaker(myView) let myButton = myButtonMaker(myView) myButton.addTarget(self, action: "buttonPress:", forControlEvents:UIControlEvents.TouchUpInside) viewshadow(myButton) viewshadow(myLabel) }


Para resolver este tipo de problemas, creé una biblioteca en swift que se llama Atributika.

let str = "<r>first</r><g>second</g><b>third</b>".style(tags: Style("r").foregroundColor(.red), Style("g").foregroundColor(.green), Style("b").foregroundColor(.blue)).attributedString label.attributedText = str

Lo puedes encontrar aquí https://github.com/psharanda/Atributika


Puede cargar una cadena HTML atribuida en Swift siguiente manera

var Str = NSAttributedString( data: htmlstring.dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true), options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil, error: nil) label.attributedText = Str

Para cargar un html desde archivo

if let rtf = NSBundle.mainBundle().URLForResource("rtfdoc", withExtension: "rtf", subdirectory: nil, localization: nil) { let attributedString = NSAttributedString(fileURL: rtf, options: [NSDocumentTypeDocumentAttribute:NSRTFTextDocumentType], documentAttributes: nil, error: nil) textView.attributedText = attributedString textView.editable = false }

http://sketchytech.blogspot.in/2013/11/creating-nsattributedstring-from-html.html

Y configure la cadena según su atributo requerido ... siga esto ...
http://makeapppie.com/2014/10/20/swift-swift-using-attributed-strings-in-swift/


Súper manera fácil de hacer esto.

let text = "This is a colorful attributed string" let attributedText = NSMutableAttributedString.getAttributedString(fromString: text) attributedText.apply(color: .red, subString: "This") //Apply yellow color on range attributedText.apply(color: .yellow, onRange: NSMakeRange(5, 4))

Para más detalles haga clic aquí; https://github.com/iOSTechHub/AttributedString



Una solución más fácil con extensión de cadena atribuida.

extension NSMutableAttributedString { // this function attaches color to string func setColorForText(textToFind: String, withColor color: UIColor) { let range: NSRange = self.mutableString.range(of: textToFind, options: .caseInsensitive) self.addAttribute(NSAttributedStringKey.foregroundColor, value: color, range: range) } }

Prueba esto y mira (Probado en Swift 3 y 4)

let label = UILabel() label.frame = CGRect(x: 120, y: 100, width: 200, height: 30) let first = "first" let second = "second" let third = "third" let stringValue = "/(first)/(second)/(third)" // or direct assign single string value like "firstsecondthird" let attributedString: NSMutableAttributedString = NSMutableAttributedString(string: stringValue) attributedString.setColorForText(textToFind: first, withColor: UIColor.red) // use variable for string "first" attributedString.setColorForText(textToFind: "second", withColor: UIColor.green) // or direct string like this "second" attributedString.setColorForText(textToFind: third, withColor: UIColor.blue) label.font = UIFont.systemFont(ofSize: 26) label.attributedText = attributedString self.view.addSubview(label)

Aquí está el resultado esperado:


Swift 4

let combination = NSMutableAttributedString() var part1 = NSMutableAttributedString() var part2 = NSMutableAttributedString() var part3 = NSMutableAttributedString() let attrRegular = [NSAttributedStringKey.font : UIFont(name: "Palatino-Roman", size: 15)] let attrBold:Dictionary = [NSAttributedStringKey.font : UIFont(name: "Raleway-SemiBold", size: 15)] let attrBoldWithColor: Dictionary = [NSAttributedStringKey.font : UIFont(name: "Raleway-SemiBold", size: 15), NSAttributedStringKey.foregroundColor: UIColor.red] if let regular = attrRegular as? [NSAttributedStringKey : NSObject]{ part1 = NSMutableAttributedString(string: "first", attributes: regular) } if let bold = attrRegular as? [NSAttributedStringKey : NSObject]{ part2 = NSMutableAttributedString(string: "second", attributes: bold) } if let boldWithColor = attrBoldWithColor as? [NSAttributedStringKey : NSObject]{ part3 = NSMutableAttributedString(string: "third", attributes: boldWithColor) } combination.append(part1) combination.append(part2) combination.append(part3)

Lista de atributos, consulte aquí NSAttributedStringKey en Apple Docs


- (void)changeColorWithString:(UILabel *)uilabel stringToReplace:(NSString *) stringToReplace uiColor:(UIColor *) uiColor{ NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithAttributedString: uilabel.attributedText]; [text addAttribute: NSForegroundColorAttributeName value:uiColor range:[uilabel.text rangeOfString:stringToReplace]]; [uilabel setAttributedText: text]; }