关于objective c:UITableViewCell\\’s backgroundView 重叠contentView

 2022-01-08 

UITableViewCell's backgroundView overlapping contentView

我正在尝试设置 UITableViewCell 的 backgroundView 参数,但 backgroundView 与单元格的边界重叠。我尝试将masksToBounds 设置为YES,但这似乎没有什么区别。请问你能告诉我哪里出错了吗?

这是显示我的问题的图像:

enter

1
2
3
4
5
6
UIImageView *iv = [[[UIImageView alloc] initWithFrame:cell.frame] autorelease];
[iv setImage:[UIImage imageNamed:@"paper"]];
[iv.layer setMasksToBounds:YES];
[cell.layer setMasksToBounds:YES];
[cell.contentView.layer setMasksToBounds:YES];
[cell setBackgroundView:iv];


使用 masksToBounds 不起作用,因为单元格的边界是矩形。

即使单元格的角是圆角的,它们仍然是单元格的一部分(但它们包含透明像素)。当单元格显示在分组表视图中时,其背景视图(及其选定的背景视图)根据其在其部分中的位置(中间、顶部、底部、单个)进行绘制。

因此,如果您想提供自定义背景视图,则需要计算单元格在其部分中的位置并提供足够的背景:

  • 通过使用 4 个不同的图像
  • 或者通过使用背景图像图层的遮罩属性
  • 或者通过继承 UIView 并实现 drawRect: 以便在绘制图像之前剪切图形上下文。

您是否将每个单元格设置为背景视图,如果是,为什么不将其设置为表格视图背景。