Sind es nur ich oder sie haben den Kopf- und Fußzeilen von gruppierten UITableView
s in iOS 11 viel mehr Polsterung hinzugefügt?
Ich kompilierte meine App für iOS 11 und bemerkte die zusätzliche Polsterung ..__ Ich löste es irgendwie, indem Sie contentInset.top
auf einen negativen Wert setzen, wenn OS 11 als Betriebssystem vorliegt. Dies ist jedoch eine hässliche Lösung.
Gibt es eine andere bessere Möglichkeit, die zusätzliche Auffüllung gruppierter Tabellenansichten zu löschen, um dieselben Ergebnisse für alle unterstützten iOS-Geräte zu erzielen? Es stinkt irgendwie, dass man für so ein Dummkopf mehrere Prüfungen hat.
Screenshot zum Vergleich:
Wie Sie sehen, gibt es unter iOS 11 zusätzliche Abstände zwischen den Abschnitten (yeah, das sind Abschnitte!).
In iOS 11 hat die Abschnittsfußzeile eine Ansicht, die den Abstand zwischen den Abschnitten erhöht. Sie müssen die Ansicht der Fußzeile explizit auf null setzen, zusätzlich zur Höhe der Fußzeile:
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
return nil;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.1;
}
Dadurch wird Ihre Tabellenansicht so aussehen, wie Sie sie in iOS 10 hatten, und dies hat auch keine Auswirkungen auf vorherige Versionen von iOS. Sie können dasselbe für die Kopfzeile tun, wenn Sie die Kopfzeilen nicht benötigen.
Sie müssen lediglich die Kopf- und Fußzeilenansicht der Tabellenansicht festlegen.
- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
return [[UIView alloc] init];
}
- (UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
return [[UIView alloc] init];
}
Bei meinem .grouped
UITableView stand ich in iOS 11 vor demselben Problem. Es funktionierte gut, wenn ich eine UITableViewController
verwendete, aber nicht in UIViewController
.
tableView.estimatedSectionHeaderHeight = 0
Ohne obige Zeile wird tableView(heightForHeaderInSection
nie aufgerufen.
Es scheint ein Fehler in iOS 11 zu sein.
Ich habe mein Problem durch Einstellen der Kopf- und Fußzeilenhöhe im Storyboard gelöst. Offensichtlich sind dies in Xcode 9 die Standardwerte beim Erstellen einer UITableView
Ich habe versucht, sie auf 0 zu setzen, aber 1 ist das Minimum und hat das Problem gelöst. Ich habe auch überprüft, wie es sich verhält, wenn automatic geprüft wird und es auch funktioniert.
Ich weiß auch nicht, ob es ein Fehler ist oder so, aber ich konnte es nicht auf einem vorhandenen Tisch tun. Ich musste es löschen und erneut auf UIViewController ziehen.
Wenn die Antwort von rashid nicht mit der Einstellung von contentInsetAdjustmentBehavior auf nie funktioniert, versuchen Sie Folgendes:
self.tableView.estimatedRowHeight = 0;
self.tableView.estimatedSectionHeaderHeight = 0
self.tableView.estimatedSectionFooterHeight = 0
Ich hatte ein ähnliches Problem, ich glaube es war ein Fehler im alten Xcode.
Wenn Sie Autolayout verwenden und Inhaltsansicht und Ansichten enthalten, funktionierte die Option Auf Ränder beschränken nicht in Xcode 8, jetzt in xCode 9 behoben Zellen anzeigen. Dies ist dann auf allen Geräten von iOS 10 und iOS 11 konsistent.