Почему sizeWithFont: constrainedToSize: lineBreakMode: возвращает неправильный размер? - PullRequest
5 голосов
/ 10 сентября 2009

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

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

Ответы [ 2 ]

3 голосов
/ 18 сентября 2009

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

3 голосов
/ 10 сентября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...