UITableView SectionHeader不显示自定义图像背景

时间:2011-08-14 12:04:51

标签: iphone objective-c cocoa-touch uitableview uiview

我正在修改TableView部分标题的外观。我设法使文本正常工作。但是背景图像似乎根本没有出现。

- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{
    UIView *headerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 30)] autorelease];
    UILabel *sectionTitle = [[[UILabel alloc] initWithFrame:CGRectMake(10, 0, 320, 30)] autorelease];
    sectionTitle.text = [[tableDataSource objectAtIndex: section] objectForKey: @"Title"];
    sectionTitle.font = [UIFont fontWithName:@"Helvetica-Bold" size:14];
    //sectionTitle.textColor = [UIColor whiteColor];
    sectionTitle.shadowColor = [UIColor colorWithWhite:0 alpha:0.4];
    sectionTitle.shadowOffset = CGSizeMake(1, 1);
    sectionTitle.backgroundColor = [UIColor colorWithWhite:0 alpha:0];
    //headerView.backgroundColor = [UIColor whiteColor];

    UIImageView *sectionHeaderBG = [[UIImageView alloc] init];
    UIImage *image = [UIImage imageNamed:@"CellBackgroundGrey4.png"];
    sectionHeaderBG.image = image;

    [headerView addSubview:sectionTitle];    
    [headerView addSubview:sectionHeaderBG];
    [headerView autorelease];
    return headerView;
}

我有什么遗失的吗?

3 个答案:

答案 0 :(得分:4)

试一试:

headerView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"CellBackgroundGrey4.png"]]; 

答案 1 :(得分:2)

我认为您错过了设置frame的{​​{1}}。

答案 2 :(得分:0)

//custom sections
- (NSString *)tableView:(UITableView *)tblView titleForHeaderInSection:(NSInteger)section {

    NSString *sectionName = nil;

    //set the table background to clear so you can see the background view behind it
    tableView.backgroundColor = [UIColor clearColor];

    //where does this go?

    UILabel *sectionHeader = [[UILabel alloc] init];
    sectionHeader.backgroundColor = [UIColor clearColor];
    sectionHeader.font = [UIFont boldSystemFontOfSize:18];
    sectionHeader.textColor = [UIColor whiteColor];

    //What is missing here?

    switch (section) {
        case 0:
            sectionName = [NSString stringWithFormat:@"Header Text 1"];
            break;
        case 1:
            sectionName = [NSString stringWithFormat:@"Header Text 2"];
            break;
        case 2:
            sectionName = [NSString stringWithFormat:@"Header Text 3"];
            break;
    }

    return sectionName;