tags:

views:

4999

answers:

2

I updated my question "Sizing a UILabel (in the iPhone SDK) to fit?" with a description of my problem with a suggested solution, but didn't get an answer. Perhaps I'll have better results by asking a new question...

I set a breakpoint after the following code:

NSString *theText = @"When in the Course of human events, it becomes necessary for one people to dissolve the political bands which have connected them with another, and to assume among the powers of the earth, the separate and equal station to which the Laws of Nature and of Nature's God entitle them, a decent respect to the opinions of mankind requires that they should declare the causes which impel them to the separation.";
CGSize theSize = [theText sizeWithFont:[UIFont systemFontOfSize:17.0f] forWidth:260.0 lineBreakMode:UILineBreakModeWordWrap];

theSize.height is 21 and theSize.width is 231. What am I doing wrong? That height can't be in pixels nor in number of lines.

Note that [UIFont systemFontOfSize:17.0f] is meant to specify the default font.

Update: I changed the code to:

CGSize constraintSize;
constraintSize.width = 260.0f;
constraintSize.height = MAXFLOAT;
NSString *theText = @"When in the Course of human events, it becomes necessary for one people to dissolve the political bands which have connected them with another, and to assume among the powers of the earth, the separate and equal station to which the Laws of Nature and of Nature's God entitle them, a decent respect to the opinions of mankind requires that they should declare the causes which impel them to the separation.";
CGSize theSize = [theText sizeWithFont:[UIFont systemFontOfSize:17.0f] constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

theSize.height is 273. That seems more like it.

+5  A: 

That height is in pixels. I expect it's truncating, i.e. giving you the metrics you'd see if you set this text on a UILabel with 1 line.

Try using sizeWithFont:constrainedToSize: and just give it MAXFLOAT for the height component of the size.

Kevin Ballard
A: 

Another way of doing that is my answer here:

http://stackoverflow.com/questions/1204000/iphone-uilabel-sizewithfont/3599071#3599071

Felix