我们可以为UITableView
Section设置背景图像吗UITableViewCell
backGroundView
?根据我的研究,这是不可能的,我们需要自定义行的部分。
甘蔗除此之外我们还能够得到更好的解决方案。
提前致谢!
我们可以为UITableView
Section设置背景图像吗UITableViewCell
backGroundView
?根据我的研究,这是不可能的,我们需要自定义行的部分。
甘蔗除此之外我们还能够得到更好的解决方案。
提前致谢!
如果有人仍然感兴趣,实际上有一个非常直接的解决方案。UITableView 将使用选择器 rectForSection 告诉您每个部分的框架:
为每个部分添加背景图像将如下所示(在视图控制器中的某处):
for(int i = 0;i < [self numberOfSectionsInTableView:self.tableView]; i++) {
UIImage *img = [[UIImage imageNamed:@"background"] resizableImageWithCapInsets:UIEdgeInsetsMake(30.0, 30.0, 40.0, 40.0) ]; //In this example the image is stretchable
UIView *borderView = [[UIImageView alloc] initWithImage:img];
CGRect section_rect = [self.tableView rectForSection:i];
borderView.frame = section_rect;
[self.tableView addSubview:borderView];
}
请记住,如果您在 tableview 中重新加载数据,您也必须重做。
是的,我正在按照以下方式执行此操作,我认为它也适用于您,....
-(void)addBackgroundViewForSectionIndex:(int)tagIndex {
for (UIView * subview in tableView.subviews) {
if(subview.tag == tagIndex)
[subview removeFromSuperview];
}
CGRect sectionFrame = [tableView rectForSection:tagIndex];
UIImageView *newView = [[UIImageView alloc]initWithFrame:sectionFrame];
newView.tag = tagIndex;
[newView setImage:[UIImage imageNamed:@"image.PNG"]];
[tableView addSubview:newView];
[tableView sendSubviewToBack:newView];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView1 cellForRowAtIndexPath: (NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView1 dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = [collection objectAtIndex:indexPath.row];
[self addBackgroundViewForSectionIndex:indexPath.section];
return cell;
}
如果有任何问题,请告诉我,... :)
不,这不可能UITableView
按预期使用。正如其他人所建议的那样,节标题将不起作用,因为它们仅在标题可见时才可见。只要它在向上滚动时消失,背景图像就会消失。
您的两个选择是:
UIImageView
实例作为子视图添加到表视图。不好玩,因为您必须手动调整它们的大小和位置,这很难做到。UICollectionView
,它支持装饰视图(正是您要寻找的)。该UICollectionView
方法可能更好,但老实说,任何一种选择都需要大量工作。
Jesper答案的 Swift 5 基本实现。
for sectionIndex in 0..<tableView.numberOfSections {
let backgroundView = UIView() // replace UIView with anything else you want, whether it was UIImage, nibView, etc...
backgroundView.frame = tableView.rect(forSection: sectionIndex)
tableView.addSubview(backgroundView)
}
您可以为 TableView 的部分设置背景。
看看委托方法如下:
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIImageView *bgImgView = [[[UIImageView alloc] initWithFrame:CGRectMake(0.0,0.0,tableView.bounds.size.width,40.0)] autorelease];
bgImgView.image = [UIImage imageNamed:@"yourimage.jpg"];
return bgImgView;
}
希望这对您有所帮助。
干杯!
table= [[UITableView alloc] initWithFrame:CGRectMake(7,0, 307, 124) style:UITableViewStylePlain];
[table setSeparatorStyle:UITableViewCellSeparatorStyleNone];
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tablebg_pt12.png"]];
imageView.frame=CGRectMake(0, 0, 307, 124);
imageView.image= [UIImage imageNamed:@"tablebg_pt12.png" ];
table.backgroundView = imageView;
[imageView release];
table.delegate = self;
table.dataSource = self;
// table.backgroundColor=[UIColor clearColor];
[viewTable addSubview:table];