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.
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.
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) ]))
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)]));
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)]))
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.