Wie entferne ich das Leerzeichen oben in einem gruppierten UITableView?

8

Wenn Sie ein UITableView mit dem UITableViewStyleGrouped -Stil erstellen, fügt es ziemlich viel Platz (oder "cushion") zwischen den eigentlichen Tableview-Zellen und den Rahmen des Tabellenrahmens ein. Dieser Raum befindet sich oberhalb, unterhalb, links und rechts von den Tableview-Zellen.

Sie können den Abstand zwischen Tableviewcells selbst ändern durch:

%Vor%

Aber selbst wenn Sie das tun, ist immer noch dieser nervige Platz zwischen dem oberen Rand des Rahmens und der ersten Tabellenansichtszelle. Darüber hinaus befindet sich noch eine Menge Platz zwischen der linken Seite des Rahmens und der Tabellenansichtszelle sowie der rechten Seite des Rahmens und der Tabellenansichtszelle.

- = - = - = - = - = - = -

Gibt es im Prinzip eine Möglichkeit, diesen Raum zu manipulieren (Größe zu verändern)? Meine einzige Lösung ist bisher, die Größe des Rahmens größer als der Bildschirm zu machen, um das Programm so zu fälschen, dass es außerhalb des Bildschirms einen "leeren Raum" hat, wodurch es entfernt wird. Dies ist jedoch offensichtlich nicht optimal und ein klarer Hack.

Irgendwelche Gedanken? Vielen Dank im Voraus!

    
Highrule 29.03.2012, 20:08
quelle

5 Antworten

30

Diese Antwort kommt ziemlich spät, aber ich hoffe, es hilft jemandem.

Der Platz ist da wegen der Eigenschaft UITableView tableHeaderView . Wenn die tableHeaderView -Eigenschaft nil ist, verwendet Apple standardmäßig eine Ansicht. Um dies zu erreichen, erstellen Sie eine leere Ansicht mit einer Höhe größer als 0 . Wenn Sie dies festlegen, wird die Standardansicht überschrieben, wodurch der unerwünschte Speicherplatz entfernt wird.

Dies kann in einem Storyboard erfolgen, indem Sie eine Ansicht an den Anfang eines tableView ziehen und dann die Höhe der Ansicht auf einen Wert von 1 oder größer einstellen.

Oder es kann programmgesteuert mit dem folgenden Code durchgeführt werden:

Ziel-C:

%Vor%

Schnell:

%Vor%

Kommentare

Wie andere bemerkt haben, können Sie die gleiche Lösung für Fußzeilen verwenden.

Quellen und Danksagungen

Siehe Dokumentation für weitere Details zur Eigenschaft tableHeaderView .

Dank @liushuaikobe für die Überprüfung mit der am wenigsten positiven normalen Zahl funktioniert.

    
James Nelson 04.03.2014 23:38
quelle
3

Einzeilige Lösung:

Ziel-C

%Vor%

Schnell

%Vor%     
Leszek Szary 25.03.2017 08:34
quelle
1

Wenn der Stil Ihrer TableView UITableViewStyleGrouped ist, dann müssen Sie auf den Delegaten der Höhe von SectionHeader oder SectionFooter achten, weil dies genau in diesem Fall implementiert werden muss.

Der Rückgabewert sollte nicht 0 sein, selbst wenn SectionHeader oder die Höhe von SectionFooter 0 ist, muss es ein sehr kleiner Wert sein; probiere CGFLOAT_MIN .

Für mein Beispiel:

%Vor%

}

%Vor%

Stellen Sie sicher, dass Sie diese beiden Methoden implementiert haben und der Wert stimmt, und der obere Rand wird fixiert.

    
FFur 30.05.2017 04:36
quelle
0

Sehr gute Antwort von Leszek. Aber da FLT_MIN deprecated ist, ist der folgende Code besser. Und verwende es in der viewDidLoad() -Methode.

Schnell

%Vor%     
Nilanshu Jaiswal 10.11.2017 12:41
quelle
0

Sie müssen auch die Fußzeile festlegen

%Vor%     
Ved prakash 14.11.2017 09:26
quelle

Tags und Links