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.
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
Cela fonctionne dans Swift:
let attributedText = NSAttributedString(string: "Happy \nDays")
label.numberOfLines = 0
label.lineBreakMode = .byWordWrapping
label.attributedText = attributedText