How to truncate UILabel to show '...' at the end of the string

RickS Source

I have a UILabel() i am trying to truncate.

    let nameLabel: UILabel = {
        let label = UILabel()
        label.textColor = .black
        label.translatesAutoresizingMaskIntoConstraints = false
        label.font = UIFont.systemFont(ofSize: 11)
        label.numberOfLines = 0
        //label.lineBreakMode = .byTruncatingTail
        //label.adjustsFontSizeToFitWidth = false
        label.textAlignment = .center

        return label

here are my constraints:

    nameLabel.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
    nameLabel.widthAnchor.constraint(equalTo: self.widthAnchor, constant: -10).isActive = true
    nameLabel.topAnchor.constraint(equalTo: profileImageView.bottomAnchor, constant: 8).isActive = true

The issue that i am having is that the actual string gets truncated but instead of having the string 'Johnson Rodriguez' truncate to ''Johnson Rod...'' it ends up cropping out anything after the space, resulting in the label displaying 'Johnson'

These are the things i have tried using:

    label.lineBreakMode = .byTruncatingTail 
    label.preferredMaxLayoutWidth = 70

This is what i have seen other people use but for some reason i cant get it to display the ... instead of truncating the string at the first space.



answered 3 months ago Koen #1

Setting numberOfLines to 1 should do the trick for you.

From the docs:

This property controls the maximum number of lines to use in order to fit the label’s text into its bounding rectangle. The default value for this property is 1. To remove any maximum limit, and use as many lines as needed, set the value of this property to 0.

comments powered by Disqus