Как устанавливается высота UITableViewCell - PullRequest
2 голосов
/ 08 января 2011

Я знаю, что когда UIKit отображает ячейку, он использует tableView:heightForRowAtIndexPath: для вычисления высоты.У меня вопрос, как и когда это устанавливается на UITableViewCell.Я хочу построить динамические ячейки, и мне нужно будет рассчитать размещение текста внутри ячейки.Я полагаю, что могу просто использовать self.bounds и self.frame - мне было просто интересно, в какой момент они установлены - даже с использованием dequeueReusableCellWithIdentifier.

Спасибо.

Ответы [ 3 ]

5 голосов
/ 08 января 2011

После того, как вы вернете ячейку из tableView:cellForRowAtIndexPath:, табличное представление устанавливает ряд свойств, включая границы ячейки, а затем вызывает tableView:willDisplayCell:forRowAtIndexPath:. Единственные изменения после этого вызова - установка альфа / кадра, и даже тогда только при анимации строки.

Учитывая, что, если вы используете набор UITableViewCell, вы можете расположить текст в tableView:willDisplayCell:forRowAtIndexPath: и быть уверенным, что ячейка уже имеет правильную ширину / высоту. Тем не менее, если вы делаете что-то большее, чем просто основы, вы можете рассмотреть возможность создания подкласса UITableViewCell. В своем подклассе вы можете расположить свои поля в layoutSubviews и быть уверенным, что ваша ячейка всегда будет правильно размещена.

0 голосов
/ 08 января 2011

Вы можете расширить пользовательскую ячейку

- (void)drawRect:(CGRect)rect
{
//You need to do your calculation for 
[super drawRect:rect];
}

Вам необходимо выполнить расчет, чтобы он отображался в правильном месте ячейки в drawRect.

0 голосов
/ 08 января 2011

Вы можете использовать делегат heightForRowAtIndexPath, например:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat result;
    result = 120.0f;
    return result;
}

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

В качестве альтернативы можно использовать значения секций и строк, чтобы определить, для какой ячейки / секций установлена ​​высота.

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