Когда я использую Auto Layout, чтобы выбрать высоту каждой ячейки (чтобы они были динамическими), это в основном работает, но некоторые ячейки немного короткие. Почему это?

Пример проекта: http://cl.ly/2j0A1J203f3h

Я пытаюсь использовать Auto Layout для динамического определения высоты каждой ячейки, чтобы в одной ячейке было больше содержимого, чем в другой. Для этого я используюэтот ответ Stackoverflow исопровождающий пример GitHub.

у меня естьUITableViewCell подкласс называетсяCSPostCell что я создал в раскадровке и положитьUILabel не более 5 строк текста на этикетке.

Просто для примера, у меня есть только две ячейки в таблице и как две разные части текста для меток (одна длиннее), которая установлена вcellForRowAtIndexPath::

- (CSPostCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CSPostCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SelfPostCell" forIndexPath:indexPath];
    cell.postTitle.text = indexPath.row == 0 ? @"Short title" : @"Long long long title. Holy crap this is one long title. When does it end? Oh right now.";
    [cell setNeedsUpdateConstraints];

    return cell;
}

Затем я возвращаю высоту каждой ячейки как таковую:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    CSPostCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SelfPostCell"];

    cell.postTitle.text = indexPath.row == 0 ? @"Short title" : @"Long long long title. Holy crap this is one long title. When does it end? Oh right now.";
    cell.postTitle.preferredMaxLayoutWidth = tableView.bounds.size.width - 40;

    [cell setNeedsUpdateConstraints];
    [cell updateConstraintsIfNeeded];
    [cell.contentView setNeedsLayout];
    [cell.contentView layoutIfNeeded];

    CGFloat height = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;

    return height;
}

Который является более или менее точной копиейПример репозитория GitHub.

Однако, когда я запускаю приложение в симуляторе, оно работает не совсем так, как должно. Высоты являются динамическими и корректируются для более длинных фрагментов текста, но не настолько, чтобы текст не обрезался. Смотрите изображение ниже:

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

Почему не отображается весь текст?

Ответы на вопрос(1)

Ваш ответ на вопрос