102 votes

iPhone/ipad : exactement comment utiliser NSAttributedString ?

Oui, beaucoup de gens disent sur Rich Text dans iPhone/iPad et beaucoup connaît `` .

Mais comment utiliser `` ? J’ai cherché beaucoup de temps, aucun extrait d’indices pour cela.

Je sais comment mettre en place un `` , alors que dois-je faire pour afficher un texte sur iPhone/iPad avec texte enrichi ?

La documentation officielle dit il doit être utilisé avec `` , ce que ce que cela signifie ?

Y a-t-il une manière simple comme ça ?

154voto

RomanN Points 1466

À partir de l’iOS 6.0, vous pouvez le faire comme ça :

79voto

Wes Points 1110

Vous devriez jeter un oeil à AliSoftware de OHAttributedLabel. C'est une sous-classe de UILabel qui attire un NSAttributedString et fournit également des méthodes pratiques pour la définition des attributs d'un NSAttributedString de UIKit classes.

À partir de l'exemple fourni dans le repo:

#import "NSAttributedString+Attributes.h"
#import "OHAttributedLabel.h"

/**(1)** Build the NSAttributedString *******/
NSMutableAttributedString* attrStr = [NSMutableAttributedString attributedStringWithString:@"Hello World!"];
// for those calls we don't specify a range so it affects the whole string
[attrStr setFont:[UIFont systemFontOfSize:12]];
[attrStr setTextColor:[UIColor grayColor]];
// now we only change the color of "Hello"
[attrStr setTextColor:[UIColor redColor] range:NSMakeRange(0,5)];


/**(2)** Affect the NSAttributedString to the OHAttributedLabel *******/
myAttributedLabel.attributedText = attrStr;
// Use the "Justified" alignment
myAttributedLabel.textAlignment = UITextAlignmentJustify;
// "Hello World!" will be displayed in the label, justified, "Hello" in red and " World!" in gray.

Remarque: Dans iOS 6+ vous pouvez rendre attribué des chaînes à l'aide de la attributedText propriété de UILabel.

15voto

mattt Points 10419

Vous devriez essayer TTTAttributedLabel. C’est un remplacement pour UILabel qui fonctionne avec NSAttributedString et est assez performant pour UITableViewCells.

6voto

matt Points 60113
<blockquote> <p>Y at-il des moyens simples comme</p> <p>NSAttributedString * str ;</p> <p>UILabel * étiquette ;</p> <p>label.attributedString = str ;</p> <p>Presque. Il suffit d’utiliser un CATextLayer. Il a une <code></code> propriété que vous pouvez définir pour un NSAttributedString.</p><p>EDIT (novembre 2012) : bien sûr tout cela a changé dans l’iOS 6. Dans iOS 6, vous pouvez faire exactement ce que l’OP a demandé pour - assigner une chaîne attribuée directement à une étiquette <code></code> .</p></blockquote>

6voto

elou Points 61

Réponse pour UILabel attribué alignement du texte sur iOS 6 : utilisation NSMutableAttributedString et ajoutez NSMutableParagraphStyle à l’attribut. Quelque chose comme ceci :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X