Hier ist, wie ich meine Tabelle:IOS 8 UITableView Selbst Sizing Zellen jump/shift visuell, wenn ein neuer View-Controller gedrückt wird
self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds];
self.tableView.delegate = self;
self.tableView.dataSource = self;
self.tableView.estimatedRowHeight = 150;
[self.view addSubview:self.tableView];
Innerhalb meiner Zellen, ich - (CGSize)sizeThatFits:(CGSize)size
rufe programmatisch die Höhe zurück (was set in - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
. ich bin Einschränkungen oder automatisches Layout nicht verwenden.
Nichts komplex und meine Höhen sind visuell alle perfekt angelegt.
aber das Problem ist, wenn ich einen neuen view-Controller drücken, die Zellen springen/shift visuell (entweder hoch oder runter). Es scheint zu springen, basierend auf der Berechnung der geschätzten Zeilenhöhe Werte - aber sizeThatFits wird auch für jede sichtbare Zelle vor dem Verschieben aufgerufen, so dass ich wirklich verwirrt bin (nicht sicher, warum überhaupt wirklich aufgerufen werden muss, da ich die verlassen Aussicht). Ich habe das contentOffset für das TableView überprüft - es ist unverändert, also ist es nicht das Problem.
Könnten Sie Ihre Antwort näher erläutern, @vadoff? Ich kenne eine Reihe von Workarounds, aber nicht diese. – rainypixels
@rainypixels hast du es jemals herausgefunden? – Steve
@Steve Ich habe eine Reihe von Optionen, aber ich habe keine ausgewählt. Ich werde wahrscheinlich gehen mit Caching die Höhen (Schlüssel = ID der Zelle + Datum der letzten Änderung, Wert = Höhe) mit NSCache. Ich hatte gehofft, Vadoff hätte eine andere/elegantere Lösung. – rainypixels