UITableViewCell的backgroundView重叠contentView

时间:2011-12-18 20:48:49

标签: objective-c ios uitableview

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

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

enter image description here

这是我的代码:

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];

2 个答案:

答案 0 :(得分:1)

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

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

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

  • 使用4个不同的图像
  • 或使用背景图像的图层的掩码属性
  • 或通过子类化UIView并实现drawRect:因此在绘制图像之前会剪切图形上下文。

答案 1 :(得分:0)

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