web-dev-qa-db-fra.com

L'ajout de NSAttributedString avec un saut de ligne renvoie la chaîne attribuée avec un format incorrect

J'utilise NSMutableAttributedString et NSAttributedString pour afficher un texte d'étiquette dans deux tailles de police différentes. Mon approche est:

NSMutableAttributedString *muAtrStr = [[NSMutableAttributedString alloc]initWithString:@"2"];
NSAttributedString *atrStr = [[NSAttributedString alloc]initWithString:@"days" attributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:8]}];
[muAtrStr appendAttributedString:atrStr];

Ce qui me renvoie une chaîne attribuée avec "2" dans la taille de police 12 et "jours" dans la taille de police 8.

Cependant, l'autre scénario consiste à ajouter un saut de ligne après 2. J'utilise le code suivant:

NSMutableAttributedString *muAtrStr = [[NSMutableAttributedString alloc]initWithString:@"2"];
NSAttributedString *atrStr = [[NSAttributedString alloc]initWithString:@"\ndays" attributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:8]}];
[muAtrStr appendAttributedString:atrStr];

Cette chaîne de temps attribuée applique l'attribut au texte intégral. J'obtiens une chaîne attribuée avec "2\ndays" dans la taille de police 8.

23
user3404693

Essayez ce code ci-dessous, cela fonctionne très bien: -

NSMutableAttributedString *muAtrStr = [[NSMutableAttributedString alloc]initWithString:@"2"];
NSAttributedString *atrStr = [[NSAttributedString alloc]initWithString:@"\ndays" attributes:@{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:8]}];
[muAtrStr appendAttributedString:atrStr];
self.lbl.numberOfLines = 0;
[self.lbl setAttributedText:muAtrStr];

Remarque: - Mettez également numberOfLines à 0 pour autoriser un nombre illimité de lignes

39
Hussain Shabbir

Cela fonctionne dans Swift:

let attributedText = NSAttributedString(string: "Happy \nDays")
label.numberOfLines = 0
label.lineBreakMode = .byWordWrapping
label.attributedText = attributedText
9
primulaveris