2009-09-10 27 views
5

我有一個字符串,我想在一個表格單元格的標籤,以顯示兩個可能的寬度,我需要計算使表格單元格的高度正確記錄的高度。然而,不管我爲約束尺寸做什麼,我都會得到相同的高度,這在我想要的情況下是不正確的。我正在使用的代碼:爲什麼sizeWithFont:constrainedToSize:lineBreakMode:返回大小不正確?

CGFloat width = 300.0f; 
NSString * value = @"LongText LongText LongText LongText LongText LongText"; 
CGSize contentSize = [value sizeWithFont: [UIFont systemFontOfSize: 14.0f] 
         constrainedToSize: CGSizeMake(width, CGFLOAT_MAX) 
          lineBreakMode: UILineBreakModeWordWrap]; 

當我檢查contentSize變量時,寬度爲252,高度爲36,這是預期的。但是,如果不是300.0fi將222.0f插入到寬度變量中,則寬度爲189,但高度仍然爲36,並且只有前4個LongText字樣顯示在2行上(第三行似乎在某些情況下被切斷計算)。有誰知道爲什麼會發生這種情況?

+0

如果您使用的是UITextView,請在這裏查看我的答案:http://stackoverflow.com/questions/2330939/sizewithfont-doesnt-give-correct-height-for-uitextview-if-there-is -a-long-strin/15408198#15408198 – domsom

回答

3

您的代碼看起來正確。查看herehere,看看代碼中是否有任何不妥之處。

+0

謝謝,但這些並不能真正解釋爲什麼該方法對於更薄的寬度無法正確運行。 – Kevlar

+0

不,你的代碼應該工作。我想也許你會看到他們的代碼和你的代碼有所不同......我沒有。 – mahboudz

+2

對;我只是想知道是否有其他人知道,實際上計算大小的蘋果代碼是不正確的,如果有其他選擇。 – Kevlar

3

事實證明,它返回正確的大小;我正在使用的代碼是使用不正確的寬度,而不是從這個方法的寬度,這就是爲什麼文本被切斷,我很困惑。

相關問題