Как исправить многострочную UILabel, которая переполняет содержащую UITableViewCell? - PullRequest
0 голосов
/ 12 июня 2009

У меня проблемы с отображением многострочной UILabel в пользовательской ячейке UITableView.

В настоящее время я использую это для вычисления высоты ячейки ...

NSString *cellText = [howtoSection objectAtIndex:row];
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:15.0];
CGSize constraintSize = CGSizeMake(260.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

return labelSize.height + 20;

... и это для самого лейбла.

// Calc the height
NSString *cellText = [howtoSection objectAtIndex:row];
CGSize constraintSize = CGSizeMake(260.0f, MAXFLOAT);
CGSize labelSize = [cellText sizeWithFont:cell.textLabel.font constrainedToSize:constraintSize lineBreakMode:cell.textLabel.lineBreakMode];

// Create the label frame
CGRect newFrame = cell.contentLabel.frame;
newFrame.size.height = labelSize.height;
cell.contentLabel.frame = newFrame;

[cell.contentLabel setText:[howtoSection objectAtIndex:row]];

Все работает, как и планировалось, за исключением того, что ярлык выталкивается из ячейки. Если бы не этот очевидный верхний предел, все бы подошло.

Вот ссылка на изображение того, что я вижу в симуляторе ...

Ошибка рендеринга iPhone

Любая помощь здесь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 12 июня 2009

Я не вижу, чтобы вы устанавливали cell.contentLabel.font в коде, который вы показываете.

Также для расчета размера этикетки используется cell.textLabel.font для расчета ее размера, но для визуализации используется переменная contentLabel.

Возможно ли, что вы делаете рендеринг с другим шрифтом, чем расчет?

0 голосов
/ 12 июня 2009

Как вы добавляете свою метку в contentView? Похоже, что исходное положение неверно, так как высота рассчитывается правильно. Если вы закомментируете назначение нового кадра, находится ли метка в правильном положении? Я держу пари, что это не так.

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