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

868voto

Alexander Punkte 9020

Ich wurde von folgenden Personen unterstützt:

YouStoryboard.storyboard > YouViewController > Attribute Inspector > Deaktivieren Sie - Einstellungen des Scroll-Views anpassen.

Bildbeschreibung hier eingeben

346voto

Mr. T Punkte 12225

Ich habe ein wenig damit herumgespielt und es scheint, dass dies eine Nebenwirkung der Einstellung des tableHeaderView = nil der tableView ist.

Da meine tableView ein dynamisch erscheinendes tableHeaderView hat, wenn ich das tableHeaderView verstecken muss, anstatt self.tableView.tableHeaderView = nil; zu benutzen, mache ich folgendes:

self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];

Ich finde diese Lösung besser als das Setzen eines eher willkürlichen contentInset.top, weil ich das contentInset.top auch dynamisch verwende. Ich muss mich daran erinnern, zusätzliche 35px zu entfernen, wann immer ich contentInset.top neu berechne. Das ist mühsam.

195voto

nvrtd frst Punkte 6122

Versuchen Sie, die contentInset-Eigenschaft zu ändern, die UITableView von UIScrollView erbt.

self.tableView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0);

Es ist eine Umgehung, aber es funktioniert

180voto

yeahdixon Punkte 6360

Für IOS 7, wenn Sie eine Tabelle in einem View Controller zuweisen, sollten Sie sich das ansehen

self.edgesForExtendedLayout = UIRectEdgeNone;

Ihr Problem schien ähnlich wie meins zu sein

Update:

Swift in iOS 9.x:

self.edgesForExtendedLayout = UIRectEdge.None

Swift 3 :

self.edgesForExtendedLayout = UIRectEdge.init(rawValue: 0)

140voto

guanhuiwit Punkte 1471
self.automaticallyAdjustsScrollViewInsets = NEIN;

Probiere es aus, du kannst es schaffen!

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