我有以下代码创建了UIView
我分配给UITableViewCell
的{{1}}媒体资源。一切都按预期工作,但子视图的背景除外,它是透明的。
我使用相同的代码创建一个我分配给selectedBackgroundView
的自定义视图,并且工作正常。
是什么导致该子视图对backgroundView
透明,我该如何避免?
selectedBackgroundView
答案 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的子类,其中包含一个自定义视图对象,并且有效。