基本上,我想更改节标题的字体和颜色,因此我实现了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;
}


但是由于某些原因,frame属性被忽略了(我说的是左边的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

最佳答案

这是因为UITableView会自动设置您提供的标题视图的框架

(0, y, table view width, header view height)

y是视图的计算位置,并且
header view heighttableView:heightForHeaderInSection:返回的值

关于iphone - 为什么tableVieW:viewForHeaderInSection忽略UILabel的frame属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4970255/

10-15 15:25