我正在尝试创建一个带有圆角的表视图标题,但是在标题视图的顶部出现了一个间隙,我无法摆脱它。见图:
这是我对标题
的代码#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的高度或标签高度添加了一定数量的像素,那么所有这些都会增加间隙。
你们知道我错过了什么吗?
感谢
答案 0 :(得分:2)
tableview有两种类型的标题,我认为你会混淆/交织这两种标题。
第一个是表头。第二个是表部分标题。
我不清楚你想要哪一个。如果您想要整个表的单个标题,您需要表标题,并使用tableView.tableHeaderView = myHeaderView进行设置。您可以通过设置视图的帧高来设置此标题的高度。 tableView将自动设置此标题的宽度。
如果您希望每个表部分中都有单独的标题,则必须覆盖tableView:viewForHeaderInSection:,并返回自定义视图。同样,您应该将此视图的初始帧设置为您想要的高度; tableview将调整宽度。
答案 1 :(得分:1)
您正以错误的方式使用此委托方法。我不知道这是否与您的问题有关,但您不应该直接在方法中设置tableViewHeader,而是返回标题视图。
答案 2 :(得分:1)
如果在Interface Builder中创建此表,则在将其拖动到视图时会应用默认的表头和页脚。如果您进入IB信息,您可以更改每个信息的大小。通过删除这些值,您的表应该如何正确。