我試圖做一個UITableViewCell,根據它顯示的字符串的長度來調整它的高度,但是在這個方法上掛起來了。爲什麼我的sizeWithFont:constrainedToSize:lineBreakMode:總是返回零?
下面是我得到了什麼:
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
。我錯過了什麼?
謝謝!
唉唉,切換到'%F'完全奏效。我的印象是'%d'也適用於'浮動',但事實並非如此。 'MAXFLOAT'似乎可以正常工作,儘管它適用於大量的數據。感謝您及時的回覆! – Triz 2009-08-30 01:03:28
另外,'%d' = signed int,不是double(與'%i'相同)。 '%f'(或'%lf')將適用於浮動和雙打。 (另外,在64位下,CGFloat是雙精度值,但在這裏顯然不適用。) – Wevah 2009-08-30 01:10:02
這裏更好的常量可能是CGFLOAT_MAX,但沒有使用MAXFLOAT的危險。要麼比選擇一個隨機的大數字更清晰,這可能會被後來的讀者解釋爲有意限制。 – 2009-08-30 03:05:22