我们可以为UITableView
部分设置背景图片,例如UITableViewCell
backGroundView
。根据我的研究,它是不可能的&我们需要自定义它的部分行。
除此之外,我们能够获得更好的解决方案。
提前致谢!
答案 0 :(得分:2)
如果有人仍然感兴趣,实际上有一个很好的直接解决方案。 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中重新加载数据,你也必须重做它。
答案 1 :(得分:1)
是的,我通过以下方式做到这一点,我认为它对你也有用,....
-(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;
}
如果有任何问题,请告诉我,......:)
答案 2 :(得分:1)
不,使用UITableView
是不可能的。正如其他人所建议的那样,节标题不起作用,因为它们只有在标题可见时才可见。一旦它向上滚动消失,背景图像就会消失。
您的两个选择是:
UIImageView
实例作为子视图添加到表视图中。没有趣,因为你必须手动调整尺寸和位置,这很难做到。UICollectionView
,它支持装饰视图(正是您要查找的内容)。 UICollectionView
方法可能更好,但说实话,任何一种选择都需要大量的工作。
答案 3 :(得分:0)
Jesper的answer的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)
}
答案 4 :(得分:-1)
您可以为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;
}
希望这会对你有所帮助。
干杯!
答案 5 :(得分:-1)
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];