ios iphone nsattributedstring nsmutableattributedstring

ios - Cambiar el color de un enlace en una NSMutableAttributedString



iphone nsattributedstring (5)

Tengo el siguiente código pero mis enlaces siempre son azules. ¿Cómo puedo cambiar el color de ellos?

[_string addAttribute:NSLinkAttributeName value:tag range:NSMakeRange(position, length)]; [_string addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"HelveticaNeue-Bold" size:(12.0)] range:NSMakeRange(position, length)]; [_string addAttribute:NSStrokeColorAttributeName value:[UIColor greenColor] range:NSMakeRange(position, length)];

_string es una NSMutableAttributedString y la posición y la longitud funcionan bien.


Rápido

Actualizado para Swift 4.2

Use linkTextAttributes con un UITextView

textView.linkTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.green]

Y en contexto:

let attributedString = NSMutableAttributedString(string: "The site is www.google.com.") let linkRange = (attributedString.string as NSString).range(of: "www.google.com") attributedString.addAttribute(NSAttributedString.Key.link, value: "https://www.google.com", range: linkRange) let linkAttributes: [NSAttributedString.Key : Any] = [ NSAttributedString.Key.foregroundColor: UIColor.green, NSAttributedString.Key.underlineColor: UIColor.lightGray, NSAttributedString.Key.underlineStyle: NSUnderlineStyle.single.rawValue ] // textView is a UITextView textView.linkTextAttributes = linkAttributes textView.attributedText = attributedString

C objetivo

Use linkTextAttributes con un UITextView

textView.linkTextAttributes = @{NSForegroundColorAttributeName:[UIColor greenColor]};

Fuente: esta respuesta

Y de esta publicación :

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"This is an example by @marcelofabri_"]; [attributedString addAttribute:NSLinkAttributeName value:@"username://marcelofabri_" range:[[attributedString string] rangeOfString:@"@marcelofabri_"]]; NSDictionary *linkAttributes = @{NSForegroundColorAttributeName: [UIColor greenColor], NSUnderlineColorAttributeName: [UIColor lightGrayColor], NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle)}; // assume that textView is a UITextView previously created (either by code or Interface Builder) textView.linkTextAttributes = linkAttributes; // customizes the appearance of links textView.attributedText = attributedString; textView.delegate = self;


El color del enlace es el color de tinte de la etiqueta / textView. Por lo tanto, puede cambiarlo cambiando el color de tinte de la vista. Sin embargo, esto no funcionará si desea diferentes colores de enlace dentro de la misma vista.


Para swift3.0

override func viewDidLoad() { super.viewDidLoad() let linkAttributes = [ NSLinkAttributeName: NSURL(string: "http://stalwartitsolution.co.in/luminutri_flow/terms-condition")! ] as [String : Any] let attributedString = NSMutableAttributedString(string: "Please tick box to confirm you agree to our Terms & Conditions, Privacy Policy, Disclaimer. ") attributedString.setAttributes(linkAttributes, range: NSMakeRange(44, 18)) attributedString.addAttribute(NSUnderlineStyleAttributeName, value: NSNumber(value: 1), range: NSMakeRange(44, 18)) textview.delegate = self textview.attributedText = attributedString textview.linkTextAttributes = [NSForegroundColorAttributeName: UIColor.red] textview.textColor = UIColor.white } func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { return true }


Rápido

let str = "By using this app you agree to our Terms and Conditions and Privacy Policy" let attributedString = NSMutableAttributedString(string: str) var foundRange = attributedString.mutableString.rangeOfString("Terms and Conditions") attributedString.addAttribute(NSLinkAttributeName, value: termsAndConditionsURL, range: foundRange) foundRange = attributedString.mutableString.rangeOfString("Privacy Policy") attributedString.addAttribute(NSLinkAttributeName, value: privacyURL, range: foundRange) policyAndTermsTextView.attributedText = attributedString policyAndTermsTextView.linkTextAttributes = [NSForegroundColorAttributeName : UIColor.blueColor()]


NSAttributedString* attributedString = [[NSAttributedString alloc] initWithString:@"here" attributes:@{ @"myCustomTag" : @(YES), NSForegroundColorAttributeName:[UIColor whiteColor], NSFontAttributeName:[UIFont fontWithName:@"SourceSansPro-Semibold" size:15], NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle) }];

C objetivo

Esto hará que se haga clic en el texto blanco subrayado. Seleccione los atributos necesarios para su código y úselo.

Para tener una cadena con un enlace en el que hacer clic, haga lo siguiente:

NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:@"Click " attributes:@{NSForegroundColorAttributeName:[UIColor whiteColor], NSFontAttributeName:[UIFont fontWithName:@"SourceSansPro-Semibold" size:15]}]; NSAttributedString* attributedString = [[NSAttributedString alloc] initWithString:@"here" attributes:@{ @"myCustomTag" : @(YES), NSForegroundColorAttributeName:[UIColor whiteColor], NSFontAttributeName:[UIFont fontWithName:@"SourceSansPro-Semibold" size:15], NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle) }]; [string appendAttributedString:attributedString];

Como resultado, obtendrá la cadena ''Haga clic aquí'' y ''aquí'' será un enlace. Puede establecer diferentes estilos para cada cadena.