UITableViewCell自定义selectedBackgroundView背景是透明的

时间:2011-11-07 21:31:08

标签: objective-c ios

我有以下代码创建了UIView我分配给UITableViewCell的{​​{1}}媒体资源。一切都按预期工作,但子视图的背景除外,它是透明的。

我使用相同的代码创建一个我分配给selectedBackgroundView的自定义视图,并且工作正常。

是什么导致该子视图对backgroundView透明,我该如何避免?

selectedBackgroundView

5 个答案:

答案 0 :(得分:7)

正如我们从ivar selectedBackgroundView的名称中看到的那样,这个背景在被选中时由单元格显示 我将重新加载UITableViewCell子类的一些方法( - setSelected:animated: - setHighlighted:animated:),以将子视图的背景颜色重置为其值。看起来就像UIKit在这个模板方法中做了一些magic(迭代所有UIView子类并将它们的背景设置为 clearColor

答案 1 :(得分:0)

此代码可能对您有所帮助:

UIImageView *cellImageView = [[UIImageView alloc] 
                                initWithFrame:CGRectMake(0, 
                                                         0, 
                                                      cell.frame.size.width, 
                                                      cell.frame.size.height
                                                         )];

  cellImageView.contentMode = UIViewContentModeScaleAspectFit;
  // normal background view
  [cellImageView setImage:[UIImage imageNamed:@"*<ImageName>*"]];

  [cell addSubview:cellImageView];
  [cell sendSubviewToBack:cellImageView];

  [cellImageView release], cellImageView = nil;

此处cell是自定义UITableViewCell的对象。

您也可以设置backgroundColor属性。

答案 2 :(得分:0)

我会尝试将containerView和subView的alpha设置为1.0

[containerView setAlpha:1.0];
...
[subview setAlpha:1.0];

这会使你的控件完全不透明。

您还可以为背景创建一些图像,并在创建2个视图的状态下使用该图像。假设您创建了2个图像(normalBackground.png和selectedBackground.png),然后将此图像设置为单元格背景。 Here是一个很好的教程。

答案 3 :(得分:-1)

在您的观看次数上尝试setOpaque:YES

答案 4 :(得分:-1)

最后,我最终继承了UITableViewCell的子类,其中包含一个自定义视图对象,并且有效。