UITableView单元格带有背景图片

时间:2011-06-13 11:30:30

标签: iphone uitableview background

我有一个UITableView,其中有3个图像。 1表示所选单元格,1表示单元格背景,1表示TableView背景。

我选择的Cell,工作正常,但是正常单元格和TableView背景(向下滚动/向上滚动时单元格背后的背景)存在一些问题

有人可以帮助我为每个单元格和TableView背景提供背景吗?这是怎么做到的?

正常细胞背景:(不确定是否正确)

// CELL'S BACKGROUND-IMAGE
    self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"cell_normal.PNG"]];

选定的细胞背景:

// SELECTED CELL'S BACKGROUND-IMAGE
    UIView *viewSelected = [[[UIView alloc] init] autorelease];
    viewSelected.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"cell_highlighted.PNG"]];
    cell.selectedBackgroundView = viewSelected;

9 个答案:

答案 0 :(得分:144)

For Cell

    cell.backgroundView = [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"cell_normal.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ];  
    cell.selectedBackgroundView =  [[UIImageView alloc] initWithImage:[ [UIImage imageNamed:@"cell_pressed.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0] ];

对于Tableview

    [mEditTableView setBackgroundView:nil];
    [mEditTableView setBackgroundView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"apple.png"]] ];

答案 1 :(得分:10)

您可以设置UITableViewCell背景颜色/图片,按照委托方式

 - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath
 *)indexPath  
{      
     if((indexPath.row)==0)  
       cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"cell_normal.PNG"]]; //set image for cell 0

     if (indexPath.row==1)  
       cell.backgroundColor = [UIColor colorWithRed:.8 green:.6 blue:.6 alpha:1]; //set color for cell 1

     tableView.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"cloud.jpg"]]; //set image for UITableView

  }

答案 2 :(得分:5)

在swift中,您可以将背景图像设置为UITableViewCell,如下所示。

cell.backgroundView = UIImageView(image: UIImage(named: "yourImage.png")!)

将此代码写入表视图的此函数中。

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

此图像将重复每一行。

答案 3 :(得分:3)

这将设置tableView的背景而不是单元格

// CELL'S BACKGROUND-IMAGE
    self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"cell_normal.PNG"]];

尝试在cellForRowAtIndexPath中设置cellbackground

 cell.backgroundColor =  [UIColor colorWithPatternImage:[UIImage imageNamed:@"cell_normal.PNG"]];

答案 4 :(得分:2)

在Swift 4中,这有效:

cell.backgroundView = UIImageView.init(image: UIImage.init(named: "YORIMAGE.jpg"))

答案 5 :(得分:0)

您可以尝试使用此代码块来设置UITableviewCell的背景图像

self.backgroundView = [[[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"background.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0]] autorelease];

self.selectedBackgroundView = [[[UIImageView alloc] initWithImage:[[UIImage imageNamed:@"background_selected.png"] stretchableImageWithLeftCapWidth:0.0 topCapHeight:5.0]] autorelease];

希望它适合你。 :)

答案 6 :(得分:0)

在UITableview单元格中设置图像

cell.imageView.image = [UIImage imageNamed:@“image.png”];

答案 7 :(得分:0)

只有这个解决方案适合我。

Cell.backgroundColor = [UIColor clearColor];
Cell.contentView.backgroundColor=[UIColor clearColor];

希望这有帮助!

答案 8 :(得分:-1)

//this concept is right but one problem is create when ur fastly scroll in uitable View then cell background color slowly change and indexing problem 

for Cell

    UIView *myBackView = [[UIView alloc] initWithFrame:cell.frame];
    myBackView.backgroundColor = [UIColor colorWithRed:1 green:1 blue:0.75 alpha:1];
    cell.selectedBackgroundView = myBackView;
    [myBackView release];

for table

    aTableView.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"cloud.jpg"]];
    aTableView.separatorStyle = UITableViewCellSeparatorStyleNone;

//this concept is right but one problem is cteare when ur fastly scroll in uitable View then cell background color slowly change and indexing problem  so use this code

for Cell


- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
   cell.backgroundColor = (indexPath.row%2)?[UIColor lightGrayColor]:[UIColor grayColor];
}