Получите tableView:heightForRowAtIndexPath: произойти после tableView:cellForRowAtIndexPath:?

Лично,

я нахожу многие из этих терминальных текстовых редакторов неспособными время от времени. Я инвестировал бы время, беря один? Абсолютно! Я продолжил бы к изучению того вдоль стороны IDE. Конечно, в конце, это действительно сводится к предпочтению.

14
задан Triz 30 August 2009 в 01:21
поделиться

2 ответа

Я отвечу на свой вопрос здесь:

Первоначально я был почти уверен, что вычисления высоты были привязаны к методу tableView: cellForRowAtIndexPath: и не могло быть переехал в другое место. Однако с помощью кучи реструктуризации я смог вытащить все это в tableView: heightForRowAtIndexPath: , который решает все.

Для всех, кто пытается получить автоматическую регулировку высоты. ячеек для работы, вот код, который может помочь:

// Inside tableView:cellForRowAtIndexPath:
cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
cell.textLabel.numberOfLines = self.numberOfTextRows;
// numberOfTextRows is an integer, declared in the class

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    CGSize theSize = [theObject.theStringToDisplay sizeWithFont:[UIFont systemFontOfSize:18.0f] constrainedToSize:CGSizeMake(265.0f, 9999.0f) lineBreakMode:UILineBreakModeWordWrap];
    // This gets the size of the rectangle needed to draw a multi-line string
    self.numberOfTextRows = round(theSize.height / 18);
    // 18 is the size of the font used in the text label
    // This will give us the number of lines in the multi-line string

    if ((indexPath.section == FIXED_HEIGHT_SECTION) || (self.numberOfTextRows < 2)) {
        return 44;
        // 44 is the default row height; use it for empty or one-line cells (or in other table sections)
    } else {
        return theSize.height + 16;
        // 16 seems to provide a decent space above/below; tweak to taste
    }
}

Если вы можете придумать более точный способ вычислить правильную высоту ячейки, я весь уши. :)

11
ответ дан 1 December 2019 в 16:44
поделиться

Вы можете просто установить для self.numberOfLines значение 0 один раз, и все будет работать так же. (Если numberOfLines установлено в 0, тогда метка использует столько строк, сколько необходимо.)

0
ответ дан 1 December 2019 в 16:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: