如何改变分组的UITableView头的高度?

我知道如何在表格视图中更改节标题的高度。 但是我无法find任何解决scheme来改变第一部分之前的默认间距。

现在我有这个代码:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ if (section == 0){ return 0; } return 10; } 

在这里输入图像说明

返回CGFLOAT_MIN而不是0为您所需的部分高度。

返回0将导致UITableView使用默认值。 这是无证的行为。 如果你返回一个非常小的数字,你实际上得到一个零高度的头。

Swift 3:

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

迅速:

 func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { if section == 0 { return CGFloat.min } return tableView.sectionHeaderHeight } 

OBJ-C:

  - (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { if (section == 0) return CGFLOAT_MIN; return tableView.sectionHeaderHeight; } 

看来我不能设置一个高度为0的表头视图。我最终做了以下工作:

 - (void)viewWillAppear:(BOOL)animated{ CGRect frame = self.tableView.tableHeaderView.frame; frame.size.height = 1; UIView *headerView = [[UIView alloc] initWithFrame:frame]; [self.tableView setTableHeaderView:headerView]; } 

你可以试试这个:

loadView

 _tableView.sectionHeaderHeight = 0; 

然后

 -(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{ return 0; } 

它应该被删除,只要你没有任何对象在头…

如果你想要一些大小的分页头,那么只改变返回值。

相同的,如果你没有得到sectionfooter删除。

 _tableView.sectionFooterHeight = 0; 

 -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ return 0; } 

那么,这适用于我在iOS7中的tableview问题。

如果使用tableView风格分组tableView自动设置顶部和底部的插入。 为了避免它们,并避免内部的插入设置,使用委托方法的页眉和页脚。 永远不会返回0.0,但CGFLOAT_MIN

Objective-C的

 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { // Removes extra padding in Grouped style return CGFLOAT_MIN; } - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { // Removes extra padding in Grouped style return CGFLOAT_MIN; } 

迅速

 func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { // Removes extra padding in Grouped style return CGFloat.leastNormalMagnitude } func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { // Removes extra padding in Grouped style return CGFloat.leastNormalMagnitude } 

在迅速2.0

 func tableView(tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat { return yourHeight } 

你可以使用viewForHeaderInSection并返回任意高度的视图。

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { int height = 30 //you can change the height if(section==0) { UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, height)]; return view; } } 

你应该删除代码self.tableView.tableHeaderView = [UIView new]; 添加之后

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{ return CGFLOAT_MIN; }

viewForHeaderInSection示例:

 - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 118)]; view.backgroundColor = COLOR_DEFAULT; NSString* key = [self.tableKeys objectAtIndex:section]; NSArray *result = (NSArray*)[self.filteredTableData objectForKey:key]; SZTicketsResult *ticketResult = [result objectAtIndex:0]; UIView *smallColoredView = [[UIView alloc] initWithFrame:CGRectMake(0, 5, 320, 3)]; smallColoredView.backgroundColor = COLOR_DEFAULT_KOSTKY; [view addSubview:smallColoredView]; UIView *topBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 8, 320, 40)]; topBackgroundView.backgroundColor = [UIColor colorWithRed:255.0/255.0 green:248.0/255.0 blue:174.0/255.0 alpha:1]; [view addSubview:topBackgroundView]; UILabel *totalWinnings = [[UILabel alloc] initWithFrame:CGRectMake(10, 8, 300, 40)]; totalWinnings.text = ticketResult.message; totalWinnings.minimumFontSize = 10.0f; totalWinnings.numberOfLines = 0; totalWinnings.backgroundColor = [UIColor clearColor]; totalWinnings.font = [UIFont boldSystemFontOfSize:15.0f]; [view addSubview:totalWinnings]; UIView *bottomBackgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 55, 320, 58)]; bottomBackgroundView.backgroundColor = [UIColor colorWithRed:255.0/255.0 green:248.0/255.0 blue:174.0/255.0 alpha:1]; [view addSubview:bottomBackgroundView]; UILabel *numberOfDraw = [[UILabel alloc] initWithFrame:CGRectMake(10, 55, 290, 58)]; numberOfDraw.text = [NSString stringWithFormat:@"sometext %@",[ticketResult.title lowercaseString]];; numberOfDraw.minimumFontSize = 10.0f; numberOfDraw.numberOfLines = 0; numberOfDraw.backgroundColor = [UIColor clearColor]; numberOfDraw.font = [UIFont boldSystemFontOfSize:15.0f]; [view addSubview:numberOfDraw]; return view;