为什么我的sizeWithFont:constrainedToSize:lineBreakMode:总是返回零?

时间:2009-08-30 00:44:55

标签: iphone cocoa-touch nsstring

我正在尝试创建一个UITableViewCell,根据它显示的字符串的长度来调整它的高度,但我对这个方法感到很沮丧。

这就是我所拥有的:

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];

无论如何,stringHeight显示为0。我错过了什么?

谢谢!

2 个答案:

答案 0 :(得分:11)

CGFloat s对应于C float数据类型;适当的格式说明符是%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];

此外,您应该使用CGFLOAT_MAX代替MAXFLOAT

答案 1 :(得分:5)

您也可以使用

NSStringFromCGSize(theSize);