У меня есть две возможные ширины для строки, которую я хочу отобразить в метке в ячейке таблицы, и мне нужно вычислить высоту так, чтобы высота ячейки таблицы была записана правильно. однако, независимо от того, что я делаю для ограничения размера, я получаю ту же высоту, что и неверно в случае, когда я хочу. Код я использую:Почему 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 строках (третья строка, похоже, как-то отрезана расчет). Кто-нибудь знает, почему это происходит?
Если вы используете UITextView, взгляните на мой ответ здесь: http://stackoverflow.com/questions/2330939/sizewithfont-doesnt-give-correct-height-for-uitextview-if-there-is -a-long-strin/15408198 # 15408198 – domsom