Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is my sizeWithFont:constrainedToSize:lineBreakMode: always returning zero?

I'm trying to make a UITableViewCell that adjusts its height based on the length of a string it's displaying, but am getting hung up on this method.

Here's what I've got:

NSString *text = @"A really long string in here";
CGSize theSize = [text sizeWithFont:[UIFont boldSystemFontOfSize:18.0f] constrainedToSize:CGSizeMake(265.0f, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
NSString *stringHeight = [NSString stringWithFormat:@"%d", theSize.height];

No matter what, stringHeight displays as 0. What am I missing?

Thanks!

like image 562
Triz Avatar asked Dec 06 '22 05:12

Triz


1 Answers

CGFloats correspond to the C float data type; the proper format specifier for them is %f:

 NSString *text = @"A really long string in here"; 
 CGSize theSize = [text sizeWithFont:[UIFont boldSystemFontOfSize:18.0f] constrainedToSize:CGSizeMake(265.0f, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap];
 NSString *stringHeight = [NSString stringWithFormat:@"%f", theSize.height];

Also, you should use CGFLOAT_MAX instead of MAXFLOAT

like image 147
rpetrich Avatar answered Apr 28 '23 23:04

rpetrich