web-dev-qa-db-fra.com

Exemple de NSAttributedString avec deux tailles de police différentes?

NSAttributedString m'est vraiment impénétrable. 

Je veux définir une UILabel pour avoir un texte de différentes tailles, et je suppose que NSAttributedString est la voie à suivre, mais je ne peux aller nulle part avec la documentation à ce sujet.

J'adorerais que quelqu'un puisse m'aider avec un exemple concret.

Par exemple, supposons que le texte que je voulais était:

(in small letters:) "Presenting The Great..."
(in huge letters:) "HULK HOGAN!"

Quelqu'un peut-il me montrer comment faire cela? Ou même une référence simple et claire où je pourrais apprendre par moi-même? Je jure que j'ai essayé de comprendre cela à travers la documentation et même à travers d'autres exemples sur Stack Overflow, et je ne comprends tout simplement pas.

77
Le Mot Juiced

Tu ferais quelque chose comme ça…

NSMutableAttributedString *hogan = [[NSMutableAttributedString alloc] initWithString:@"Presenting the great... Hulk Hogan!"];
[hogan addAttribute:NSFontAttributeName
              value:[UIFont systemFontOfSize:20.0]
              range:NSMakeRange(24, 11)];

Cela définira les deux derniers mots dans un texte en 20 points; le reste de la chaîne utilisera la valeur par défaut (ce qui, je crois, est de 12 points). Ce qui peut semer la confusion au sujet de la définition de la taille du texte est que vous devez définir la police de caractères et en même temps - chaque objet UIFont encapsule ces deux propriétés.

158
bdesham

Solution Swift 3

En outre, vous pouvez utiliser la fonction append au lieu de spécifier des index dans ObjC ou Swift:

let attrString = NSMutableAttributedString(string: "Presenting The Great...",
                                           attributes: [ NSFontAttributeName: UIFont.systemFont(ofSize: 20) ])

attrString.append(NSMutableAttributedString(string: "HULK HOGAN!",
                                            attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 40) ]))
18
iljn

Swift 4 Solution:

let attrString = NSMutableAttributedString(string: "Presenting The Great...",
                                       attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 18)]);

attrString.append(NSMutableAttributedString(string: "HULK HOGAN!",
                                        attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 36)]));
10
Kunal Shah

Solution Swift 4.2:

let attrString = NSMutableAttributedString(string: "Presenting The Great...",
                                                   attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 18)])

attrString.append(NSMutableAttributedString(string: "HULK HOGAN!",
                                                    attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 36)]))
0
Nick Kirsten

Si vous voulez le faire facilement, il existe un référentiel git appelé OHAttributedLabel que j’utilise qui fournit une catégorie sur NSAttributedString. Cela vous permet de faire des choses comme:

NSMutableAttributedString *mystring = [[NSMutableAttributedString alloc] initWithString:@"My String"];
[mystring setTextColor:[UIColor colorWithRGB:78 green:111 blue:32 alpha:1]];
mystring.font = [UIFont systemFontOfSize:14];

Si vous ne souhaitez pas utiliser de bibliothèque tierce, consultez ce lien pour obtenir un didacticiel décent sur la façon de se familiariser avec les chaînes attribuées.

0
JonahGabriel