Почему sizeWithFont: constrainedToSize: lineBreakMode: возвращает неправильный размер?

StackOverflow https://stackoverflow.com/questions/1407106

Вопрос

У меня есть две возможные ширины для строки, которую я хочу отобразить в метке в ячейке таблицы, и мне нужно вычислить высоту, чтобы высота ячейки таблицы была записана правильно. однако, независимо от того, что я делаю для ограничивающего размера, я получаю одинаковую высоту, что неверно в том случае, если я хочу. Код, который я использую:

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 строках (третья строка кажется как-то обрезана в расчет). Кто-нибудь знает, почему это происходит?

Это было полезно?

Решение

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top