web-dev-qa-db-fra.com

Définition de la couleur de la police NSLinkAttributeName

J'ai l'impression qu'il me manque quelque chose de facile mais je n'arrive pas à trouver comment faire ceci:

J'ai défini l'attribut sur un lien comme suit:

[myAttrString addAttribute:NSLinkAttributeName value:linkURL range:selectedRange];

Cela fonctionne mais le lien est bleu et je n'arrive pas à changer la couleur. Ceci définit tout sauf le lien vers le blanc:

[myAttrString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:selectedRange];

Y a-t-il un autre nom d'attribut de couleur que je n'arrive pas à trouver qui soit spécifique aux liens? 

21
Oren
  1. Utilisez une UITextView
  2. Définissez la UITextView 's linkTextAttributes comme suit:

    textView.linkTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor]};
    
62
Justin Moser

En fait, j'ai fini par utiliser TTTAttributedLabel pour mon étiquette, puis j'ai pu faire ce qui suit parfaitement bien:

NSDictionary *linkAttributes = @{(id)kCTForegroundColorAttributeName: [UIColor whiteColor],
                                 (id)kCTUnderlineStyleAttributeName: [NSNumber numberWithInt:kCTUnderlineStyleSingle]
                                 };
self.lblDescription.linkAttributes = linkAttributes;    
3
Oren

txtLabel.linkAttributes = @{};

C’est le bon, appelez cette ligne avant de définir tout autre attribut

2
SeiU

Pour Swift (pour référence pour les autres):

// Color the links
var linkAttributes: NSMutableDictionary = NSMutableDictionary()
linkAttributes.setValue(self.appDelegate.variables.color320, forKey: NSForegroundColorAttributeName)

myTextView.linkTextAttributes = linkAttributes as [NSObject : AnyObject]
2
Alex

Cela fonctionne pour moi:

txtLabel.linkAttributes = @{};

NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:expression];

{
[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:result.range];

[string addAttribute:NSLinkAttributeName value:@"link" range:result.range];
}
1
gschool

Pour Swift 3 

var aURL = "Http:// Your URL"
var description = "Click Me:"
let attributedString = NSMutableAttributedString(string: description + aURL)

/// Deal with link color
let foundURLRange = attributedString.mutableString.range(of: aURL)
attributedString.addAttribute(NSLinkAttributeName, value: aURL, range: foundURLRange)
textview.linkTextAttributes = [NSForegroundColorAttributeName: UIColor.yellow]

/// Deal with description color
let foundDescriptionRange = attributedString.mutableString.range(of: description)
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.red, range: foundDescriptionRange)

textview.attributedText = attributedString

 enter image description here

1
Stephen Chen

Explication:

Ceci est étonnamment facile, les composants texte prenant en charge link detection ont une propriété appelée linkTextAttributes.

Cette propriété stocke le style pour le lien dès que le composant peut l'appliquer lorsque détecte un nouveau lien.

En résumé, votre style sera appliqué, puis le style stocké dans cette propriété (dans cet ordre), remplaçant avec succès votre style souhaité.

Solution:

Définissez cette propriété sur vide (linkTextAttributes = [:]) et prenez le contrôle total de vos styles de liens.


CONSEIL: Ceci peut être utilisé pour créer des éléments touchable sur votre UITextView qui se comportent comme un bouton . Créer un effet vraiment sympa ????

0
Hugo Alonso