基本上我想更改部分标题的字体和颜色,因此我实现了tableVieW:viewForHeaderInSection
。首先我尝试了这段代码:
-(UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UILabel* headerLabel = [[[UILabel alloc] init] autorelease];
headerLabel.frame = CGRectMake(10, 0, 300, 40);
headerLabel.backgroundColor = [UIColor clearColor];
headerLabel.textColor = [UIColor blackColor];
headerLabel.font = [UIFont boldSystemFontOfSize:18];
headerLabel.text = @"My section header";
return headerLabel;
}
但由于某种原因,框架属性被忽略(我在谈论左边的10px插图)。现在我使用以下内容:
-(UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
UIView* headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 40)] autorelease];
UILabel* headerLabel = [[UILabel alloc] init];
headerLabel.frame = CGRectMake(10, 0, 300, 40);
headerLabel.backgroundColor = [UIColor clearColor];
headerLabel.textColor = [UIColor blackColor];
headerLabel.font = [UIFont boldSystemFontOfSize:18];
headerLabel.text = @"My section header";
[headerView addSubview:headerLabel];
[headerLabel release];
return headerView;
}
具有所需的结果。有人可以向我解释为什么第二种方法有效,第一种方法没有?
PS。在这两种情况下,我也实现tableView:heightForHeaderInSection
,返回40.0
答案 0 :(得分:26)
那是因为UITableView会自动设置您提供给
的标题视图的框架 (0, y, table view width, header view height)
y
是视图的计算位置和
header view height
是tableView:heightForHeaderInSection:
答案 1 :(得分:1)
或许最好添加一个子视图:
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let view = UIView(frame: CGRect(x: 0, y: 0, width: 20, height: 20))
let label = UILabel(frame: CGRect(x: 15, y: 5, width: tableView.frame.width, height: 20))
label.text = "\(sections[section].year)"
view.addSubview(label)
return view
}