2009-09-10 3 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

Ваш код выглядит правильно. Посмотрите here и here, чтобы узнать, есть ли что-нибудь в вашем коде.

+0

Спасибо, но на самом деле это не объясняет, почему метод не ведет себя корректно для более тонких ширин. – Kevlar

+0

Нет, ваш код должен работать. Я думал, может быть, вы увидите разницу между их кодом и вашим ... Я этого не сделал. – mahboudz

+2

правый; Мне просто интересно, знает ли кто-нибудь еще, что код яблока, который фактически вычисляет размер, неверен и если есть альтернатива. – Kevlar

3

Оказалось, что он возвращает правильный размер; код, над которым я работал, использовал неправильную ширину вместо ширины этого метода, поэтому текст был отключен, и я был сбит с толку.

Смежные вопросы