732 Stimmen

Warum gibt es zusätzlichen Abstand oben auf meiner UITableView mit dem Style UITableViewStyleGrouped in iOS7?

Ab iOS 7 gibt es zusätzlichen Platz oben auf meinen UITableView's, die den Style UITableViewStyleGrouped haben.

Hier ist ein Beispiel:

Bildbeschreibung hier eingeben

Die Tabelle beginnt beim ersten Pfeil, es gibt 35 Pixel unerklärlichen Abstand, dann ist der grüne Header eine UIView, die von viewForHeaderInSection zurückgegeben wird (wo die Sektion 0 ist).

Kann jemand erklären, woher diese 35 Pixel kommen und wie ich sie loswerden kann, ohne zu UITableViewStylePlain zu wechseln?


Update (Antwort):

In iOS 11 und später:

tableView.contentInsetAdjustmentBehavior = .never

25voto

arauter Punkte 7233

Dies ist die Lösung für iOS 10 mit Swift 3:

Sie können die oberen und unteren Abstände loswerden, indem Sie die folgenden Methoden des UITableViewDelegate implementieren.

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
{ 
    return CGFloat.leastNormalMagnitude
}

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat
{
   return CGFloat.leastNormalMagnitude
}

16voto

sunshinejr Punkte 4794

Also habe ich hier alle Methoden ausprobiert, aber dieses Mal haben mir keine von ihnen geholfen. Mein Fall war eine gruppierte Tabellenansicht auf iOS 9. Ich weiß nicht wirklich warum und wie ich darauf gekommen bin, aber für mich hat es funktioniert, wenn ich das tableViewHeader mit einem UIView mit mindestens einer Höhe von 0,01 gesetzt habe. CGRectZero hat nicht geholfen, nichts hat wirklich geholfen:

tableView.tableHeaderView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 0.0, height: 0.01))

15voto

judepereira Punkte 1130

Fügen Sie einfach folgendes in Ihr viewDidLoad in Ihrem VC hinzu:

self.automaticallyAdjustsScrollViewInsets = NO;

14voto

Lukas Punkte 2495

In meinem Fall hat mir das geholfen. Ich unterstütze auch ios6.

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
    self.edgesForExtendedLayout = UIRectEdgeNone;
    self.extendedLayoutIncludesOpaqueBars = NO;
    self.automaticallyAdjustsScrollViewInsets = NO;
}

13voto

Saeed Ir Punkte 1438

So kann es einfach in iOS 11 und Xcode 9.1 über Storyboard behoben werden:

Wählen Sie Table View > Größeninspektor > Inhaltsabstände: Nie

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X