Gibt es eine Möglichkeit, den Abstand zwischen zwei Abschnitten einer UITableView zu reduzieren? Es gibt ungefähr 15 Pixel zwischen jedem einzelnen Abschnitt, den ich habe. Ich habe bereits versucht, 0 für -tableView:heightForFooterInSection:
und -tableView:heightForHeaderInSection:
zurückzugeben, aber das ändert nichts.
Irgendwelche Vorschläge?
Es war ein bisschen schwierig, aber probieren Sie diesen Code:
- (CGFloat)tableView:(UITableView*)tableView
heightForHeaderInSection:(NSInteger)section {
if (section == 0) {
return 6.0;
}
return 1.0;
}
- (CGFloat)tableView:(UITableView*)tableView
heightForFooterInSection:(NSInteger)section {
return 5.0;
}
- (UIView*)tableView:(UITableView*)tableView
viewForHeaderInSection:(NSInteger)section {
return [[UIView alloc] initWithFrame:CGRectZero];
}
- (UIView*)tableView:(UITableView*)tableView
viewForFooterInSection:(NSInteger)section {
return [[UIView alloc] initWithFrame:CGRectZero];
}
Ändern Sie die Werte entsprechend. Um das Leerzeichen zu entfernen, denke ich, dass 0.0 nicht akzeptiert wird. Der kleinste gesunde Wert scheint 1,0 zu sein.
Für alle, die den Abstand auf 0 verringern möchten, müssen Sie Folgendes verwenden:
tableView.sectionHeaderHeight = 0.0;
tableView.sectionFooterHeight = 0.0;
Weil das Serving von UITableViewDelegate nur einen Effekt ausgehend von Floats größer als Null bewirkt.
-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section
{
return 1.0;
}
-(CGFloat)tableView:(UITableView*)tableView heightForFooterInSection:(NSInteger)section
{
return 1.0;
}
-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
{
return [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
}
-(UIView*)tableView:(UITableView*)tableView viewForFooterInSection:(NSInteger)section
{
return [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
}
(mit iOS 4.1 mit XCode 4.0.2)
Sie können die Höhe der Fußzeile/Kopfzeile/Zelle tatsächlich im Interface Builder auf der Registerkarte Größe festlegen. Die Kopf-/Fußzeile ist standardmäßig auf 10.0 eingestellt.
Sie müssen die Kopf-/Fußzeile des Abschnitts reduzieren. Dann wird der Abstand zwischen den Abschnitten verringert.
versuchen Sie diesen Code
Für mich geht das :-)
tableView.sectionHeaderHeight = 2.0;
tableView.sectionFooterHeight = 2.0;
Sie können auch die Höhe der Abschnittsfußzeile und -kopfzeile vom Storyboard aus reduzieren. In der Tabellenansicht -> Größeninspektor. Gehen Sie zur Abschnittshöhe.
Standardmäßig ist der Wert für Plain Style Table auf 22 und für Grouped Style Table auf 10 festgelegt. Sie können Werte konfigurieren, indem Sie die Werte für Kopf- und Fußzeile getrennt erhöhen/verringern.
Für mich bestand das Problem darin, dass ich einen gruppierten Tabellensichtstil (UITableViewStyleGrouped
) verwendete. Als ich sie in einen einfachen Stil (UITableViewStylePlain
) änderte, war meine tableView:heightForHeaderInSection:
-Methode das einzige, was die Größe jedes Abschnittskopfs festlegte.
UPDATE FOR iOS7: Aufgrund eines ARC-Autorelease-Updates wurde hier @Martin Stolz-Code bearbeitet.
-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section
{
if(section == 0)
return 6;
return 1.0;
}
-(CGFloat)tableView:(UITableView*)tableView heightForFooterInSection:(NSInteger)section
{
return 5.0;
}
-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
{
return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}
-(UIView*)tableView:(UITableView*)tableView viewForFooterInSection:(NSInteger)section
{
return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}
(Mit iOS7, Xcode v5.0)
Verwenden Sie dies vielleicht, 0 funktioniert nicht wie erwartet
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return .leastNormalMagnitude
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return .leastNormalMagnitude
}
Für mich wurde gerade dieses Problem gelöst, indem der folgende Code verwendet wurde:
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return section == 0 ? 1 : 20 // 20 is my other sections height
}
Die Rückgabe von 1 für den ersten Abschnitt hat das Problem gelöst.