将背景图像设置为UITableView节标题

时间:2012-12-21 17:57:34

标签: objective-c ios cocoa-touch uitableview

我在线搜索并在stackoverflow上搜索但是找不到一个好的答案怎么做。 我读过关于

的文章
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section`

但那里没有任何东西可以帮助我。

最接近标题图像背景的是:

headerView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"myBackground.png"]];

但它将图片显示为无法控制其大小的图案。

4 个答案:

答案 0 :(得分:9)

如果要将图像设置为节标题,请使用:

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

    UIImage *myImage = [UIImage imageNamed:@"loginHeader.png"];
    UIImageView *imageView = [[[UIImageView alloc] initWithImage:myImage] autorelease];
    imageView.frame = CGRectMake(10,10,300,100);

    return imageView;

}

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

答案 1 :(得分:2)

您可以将背景颜色设置为带图像的图案:

headerView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImage.png"]

答案 2 :(得分:0)

当然可以。在方法-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section中,您需要简单地使用图像实例化UIImageView,设置imageView对象的帧并返回imageView对象。

答案 3 :(得分:0)

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

    UIView* headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 100)];

    headerView.backgroundColor = [UIColor colorWithWhite:0.5f alpha:1.0f];
    headerView.layer.borderColor = [UIColor colorWithWhite:1.0 alpha:1.0].CGColor;
    headerView.layer.borderWidth = 1.0;

    UILabel* headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(5,headerView.frame.size.height-40, tableView.frame.size.width - 5, 30)];

    headerLabel.backgroundColor = [UIColor clearColor];
    headerLabel.textColor = [UIColor whiteColor];
    headerLabel.font = [UIFont boldSystemFontOfSize:22.0];
    headerLabel.text = @"yourText";
    headerLabel.textAlignment = NSTextAlignmentLeft;

    UIImageView *headerImage = [[UIImageView alloc]initWithFrame:headerView.frame];


    headerImage.image = [UIImage imageNamed:[NSString stringWithFormat:@"image.jpg"]];
    headerImage.contentMode = UIViewContentModeScaleAspectFill;
    [headerImage setClipsToBounds:YES];

    [headerView addSubview:headerImage];
    [headerView addSubview:headerLabel];

return headerView;
}

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