iphone - 表视图标题问题

时间:2011-01-03 21:51:13

标签: iphone

我正在尝试创建一个带有圆角的表视图标题,但是在标题视图的顶部出现了一个间隙,我无法摆脱它。见图: alt text

这是我对标题

的代码
#define HEADER_HEIGHT 35.0f


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

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {


   if (tableView.tableHeaderView) { // header was already created... go away
     return tableView.tableHeaderView;
   }

   CGFloat width = 300.0f;
   CGRect rectArea = CGRectMake(10.0f, 5.0f, width, HEADER_HEIGHT);

   tableView.tableHeaderView = [[[UIView alloc] initWithFrame:rectArea] autorelease];

   UIColor *orange =  [UIColor colorWithRed:(255.0f/255.0f) green:(228.0f/255.0f) blue:0.0f alpha:1.0f];

   [tableView.tableHeaderView setBackgroundColor:orange];

   rectArea = CGRectMake(10.0f, 5.0f, width, HEADER_HEIGHT);
   UILabel *lbl = [[UILabel alloc] initWithFrame:rectArea];
   lbl.text = NSLocalizedString(@"TGERAL", @"");
   lbl.textAlignment = UITextAlignmentLeft;
   lbl.font = [UIFont systemFontOfSize:13.0f];
   lbl.textColor = [UIColor blackColor];
   lbl.backgroundColor = [UIColor clearColor];
   lbl.numberOfLines = 2.0f;
   lbl.lineBreakMode = UILineBreakModeWordWrap;
   //[lbl sizeToFit];

   [tableView.tableHeaderView addSubview:lbl];
   [lbl release];

   self.tableView.tableHeaderView.layer.cornerRadius = 6.0f;

   return tableView.tableHeaderView;
}

如果我更改HEADER_HEIGHT或者我在tableHeaderView的高度或标签高度添加了一定数量的像素,那么所有这些都会增加间隙。

你们知道我错过了什么吗?

感谢

3 个答案:

答案 0 :(得分:2)

tableview有两种类型的标题,我认为你会混淆/交织这两种标题。

第一个是表头。第二个是表部分标题。

我不清楚你想要哪一个。如果您想要整个表的单个标题,您需要表标题,并使用tableView.tableHeaderView = myHeaderView进行设置。您可以通过设置视图的帧高来设置此标题的高度。 tableView将自动设置此标题的宽度。

如果您希望每个表部分中都有单独的标题,则必须覆盖tableView:viewForHeaderInSection:,并返回自定义视图。同样,您应该将此视图的初始帧设置为您想要的高度; tableview将调整宽度。

答案 1 :(得分:1)

您正以错误的方式使用此委托方法。我不知道这是否与您的问题有关,但您不应该直接在方法中设置tableViewHeader,而是返回标题视图。

答案 2 :(得分:1)

如果在Interface Builder中创建此表,则在将其拖动到视图时会应用默认的表头和页脚。如果您进入IB信息,您可以更改每个信息的大小。通过删除这些值,您的表应该如何正确。