zorro2b
zorro2b

Reputation: 2257

How to make UILabel resize to fit text

I have a UILabel that I have layed out in a storyboard centred in the view. It has some initial text "tap to login".

I am changing the value of the label to be the user's name once they have logged in. Once I do this, the label is no longer centered as the UILabel has not changed size.

How can I do this with autolayout in interface builder?

Upvotes: 11

Views: 13942

Answers (4)

balkaran singh
balkaran singh

Reputation: 2786

enter image description here

see this scrrenshot

1 first select your label width constraint

2 set the relation Greater than or equal

3 set the default constant value here i set it 10

when you change the label text it change the size of label according to its text. hope it's help :)

Upvotes: 14

Pavankumar
Pavankumar

Reputation: 288

1.showing initial text to label 2.After pressing button changing text, that showing in middle of screen 3.Look at constraints third image, two constraints given 1.top to view 2.horizontally middle in container

Another thing if u given fixed width for the label,change relation as more than equal.[Click width constraint ,see right side top there change the relation]

Upvotes: 0

Randall Wang
Randall Wang

Reputation: 1037

You can set the UILabel frame.width bigger, maybe the same width as the screen.

Then you set the

label.textAlignment = NSTextAlignmentCenter

Upvotes: 0

Rakshith Nandish
Rakshith Nandish

Reputation: 639

Iam guessing the label is not getting height and width, consider giving those constraints and then when your text changes use this method to determine the height and width:

    func labelSizeWithString(text: String, maxWidth : CGFloat,numberOfLines : Int) -> CGRect{
    let label = UILabel(frame: CGRectMake(0, 0, maxWidth, CGFloat.max))
    label.numberOfLines = numberOfLines
    label.text = text

    label.sizeToFit()

    return label.frame
}

Upvotes: 1

Related Questions