web-dev-qa-db-fra.com

NSAttributedString troncature de queue dans UILabel

J'utilise ContextLabel pour analyser @, # et URL. C'est la meilleure solution que j'ai trouvée, car elle taille correctement et n'affecte pas les performances. Il analyse d'abord la chaîne à l'entrée puis la convertit en NSAttributedString et ensuite l'affecte à attributedText propriété de UILabel. Tout fonctionne comme prévu, sauf la troncature de la queue - c'est très incorrect (voir photo ci-dessous)

enter image description here

Où dois-je commencer à creuser - s'agit-il de mauvais attributs sur la chaîne attribuée? Ou un problème de disposition d'étiquette? Merci!

25
Nikita Pronchik

J'ai eu ce problème et je l'ai résolu en ajoutant un NSParagraphStyle spécifiant le mode de saut de ligne souhaité:

    //assuming myString is an NSMutableAttributedString
    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.lineBreakMode = .byTruncatingTail

    let range = NSRange(location: 0, length: myString.mutableString.length)
    myString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: range)

Voir Word wrap for NSMutableAttributedString pour plus de référence.

50
Jon Brooks

Le suivi fonctionne également indépendamment de l'utilisation de AttributedText ou de texte normal.
Assurez-vous d'ajouter la ligne ci-dessous après avoir défini le AttributedText et la police sur l'étiquette:

label.lineBreakMode = .byTruncatingTail
11
Nishitha