UILabel auto resize on basis of text to be shown

Muhammad Uzair Arshad picture Muhammad Uzair Arshad · Mar 25, 2011 · Viewed 91k times · Source

I'm working on an application, in which I'm required to autoresize the text area on basis of text to be displayed.

Firstly, I'm not sure for this either I should use UILabel (Logically is the best choice for displaying static text, which is in my case) or UITextView.

How I wish to use it?
I want to simply init my Label or text view for that matter with Text. Instead I define the frame first and then restrict my text in that area.

If you can suggest the right solution, that will be a great help.

I went through documentation and other references but didn't find much which could help me here or I could've overlooked it.

Answer

Muhammad Uzair Arshad picture Muhammad Uzair Arshad · Mar 26, 2011

The sizeToFit method worked just great.

I did following.

UILabel *testLabel =[[UILabel alloc] initWithFrame:CGRectMake(6,3, 262,20 )]; // RectMake(xPos,yPos,Max Width I want, is just a container value);

NSString * test=@"this is test this is test inthis is test ininthis is test inthis is test inthis is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...";

testLabel.text = test;
testLabel.numberOfLines = 0; //will wrap text in new line
[testLabel sizeToFit];

[self.view addSubview:testLabel];