Wenn ich das automatische Layout verwende, um die Höhe jeder Zelle zu wählen (damit sie dynamisch ist), funktioniert das meistens, aber einige Zellen sind etwas kurz. Warum ist das?

Beispielprojekt: http://cl.ly/2j0A1J203f3h

Ich versuche, das automatische Layout zu verwenden, um die Höhe jeder Zelle dynamisch zu bestimmen, sodass einige Zellen mehr Inhalt als andere enthalten können. Dazu benutze ichdiese Stackoverflow-Antwort und dasBegleitendes GitHub-Beispiel.

Ich habe einUITableViewCell Unterklasse aufgerufenCSPostCell dass ich im Storyboard erstellt und eineUILabel in mit maximal 5 Textzeilen im Etikett.

Nur zu Beispielzwecken habe ich nur zwei Zellen in der Tabelle und als solche zwei verschiedene Textteile für die Etiketten (die längeren), die in eingerichtet sindcellForRowAtIndexPath::

- (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;
}

Ich gebe dann die Höhe jeder Zelle als solche zurück:

- (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;
}

Welches ist mehr oder weniger eine exakte Kopie von derGitHub Repo Beispiel.

Wenn ich die App im Simulator starte, funktioniert sie jedoch nicht so, wie sie sollte. Die Höhen sind dynamisch und passen sich an längere Textabschnitte an, aber nicht genug, damit der Text nicht abgeschnitten wird. Siehe das Bild unten:

In diesem Fall sollte die Beschriftung der zweiten Zelle eine weitere Zeile anzeigen, um den Text zu vervollständigen, diese wird jedoch abgeschnitten.

Warum wird nicht der gesamte Text angezeigt?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage