NSAttributedString - UILabel - multiline ?

jojolebgjojolebg Membre
décembre 2013 modifié dans API UIKit #1

Bonjour,


 


J'ai actuellement un soucis. Je souhaite afficher un NSAttributedString dans un UILabel, dans une UITableViewCell. Jusque là  tout va bien.


 


Avec le code suivant tout fonctionne (C'est à  dire que le label s'affiche bien sur 2 lignes comme prévu):


(Sur iOS 6 comme sur iOS 7)



- (void)setTitle:(NSString *)title
{
NSMutableAttributedString *attributed = [[NSMutableAttributedString alloc] initWithString:title];
self.titleLabel.attributedText = attributed;
}

Mais si je rajoute un style de paragraphe, le label s'affiche sur 2 lignes, mais je n'ai plus les 3 petits points à  la fin du label.


(Sur iOS 6 comme sur iOS 7)



- (void)setTitle:(NSString *)title
{
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];

NSMutableAttributedString *attributed = [[NSMutableAttributedString alloc] initWithString:title];
[attributed addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, title.length)];
self.titleLabel.attributedText = attributed;
}

Encore pire, si je rajoute un LineSpacing dans mon paragrapheStyle,


  • Sur iOS 7: le label s'affiche sur deux lignes, mais je n'ai pas les 3 petits points.
  • Sur iOS 6: le label s'affiche seulement sur une ligne, et je n'ai pas les 3 petits points.

- (void)setTitle:(NSString *)title
{
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle defaultParagraphStyle] mutableCopy];
[paragraphStyle setLineSpacing:3];

NSMutableAttributedString *attributed = [[NSMutableAttributedString alloc] initWithString:title];
[attributed addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, title.length)];
self.titleLabel.attributedText = attributed;
}

Quelqu'un à  une idée du pourquoi, et du comment résoudre ça ?


Réponses

  • AliGatorAliGator Membre, Modérateur
    Si tu mets un NSParagraphStyle sur ton NSAttributedString, c'est lui qui porte alors les attributs de wrapping et d'éllipse (les 3 petits points).

    Donne la valeur adéquate à  la propriété lineBreakMode de ton NSParagraphStyle pour indiquer ce que tu veux comme type de wrapping et d'ellipse et ça devrait être bon.
  • Ouai pour les 3 petits points j'ai trouvé ça, 5 minutes après avoir poster le message.


    Mais par contre, ça ne fonctionne que sur iOS 7.


     


    Sur iOS 6, le label ne s'affiche que sur une ligne sans les 3 petits points.


     


    Merci de la réponse.


  • Une idée pour le faire marché aussi sur iOS 6 ?


Connectez-vous ou Inscrivez-vous pour répondre.