Lorsque je modifie dynamiquement le texte d'un UILabel, je préfère obtenir des points de suspension (point, point, point) plutôt que de redimensionner automatiquement le texte. Comment est-que quelqu'un peut faire ça?
En d'autres termes, si j'ai UILabel avec le mot Cat
avec la police de taille 14 et que je change le mot en Hippopotamus
la police se rétrécit pour s'adapter à tout le Word. Je préférerais que le mot soit automatiquement tronqué suivi d'un point de suspension.
Je suppose qu'il existe un paramètre qui peut être modifié dans mon objet UILabel. Je préfère ne pas le faire par programme.
Définissez les propriétés suivantes:
label.adjustsFontSizeToFitWidth = NO;
label.lineBreakMode = NSLineBreakByTruncatingTail;
Vous pouvez également définir ces propriétés dans le générateur d'interface.
Solution rapide:
label.lineBreakMode = .ByTruncatingTail
Swift 3:
label.lineBreakMode = .byTruncatingTail
J'ai rencontré un problème lors de la production d'Ellipsis après avoir créé un UILabel et j'ai dû utiliser UILabel.attributedText
au lieu de UILabel.text
. Il existe un mode de saut de ligne sur le style de paragraphe qui remplacera le UILabel.lineBreakMode
lors de l'utilisation du texte attribué. Vous devrez définir lineBreakMode
sur .byTruncatingTail
sur le style de paragraphe de la chaîne attribuée si vous souhaitez obtenir des points de suspension.
par exemple.
let attributedString = NSMutableAttributedString(string: "example long string", attributes: [...])
let textRange = NSRange(location: 0, length: textString.length)
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineBreakMode = .byTruncatingTail
textString.addAttribute(.paragraphStyle, value: paragraphStyle, range: textRange)
uiLabel.attributedText = attributedString