Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get -[NSString sizeWithFont:forWidth:lineBreakMode:] to work?

Tags:

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.

like image 364
Daryl Spitzer Avatar asked Jan 07 '09 04:01

Daryl Spitzer


1 Answers

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.

like image 165
Lily Ballard Avatar answered Sep 19 '22 08:09

Lily Ballard