因此,我在UITableViewCell
内设置custum selectedBackgroundView时遇到了问题。
我的单元格具有一个contentView
,它基本上是一个UIView
(帧= 0,0,80,70),背景为黑色,并且UIImageView
作为 subview 。
imageView的contentMode = UIViewContentModeScaleAspectFit;
看起来像这样:
现在,我将selectedBackgroundView设置如下:
//set the custom selected color
UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = MY_TINT_COLOR;
CGColorRef darkColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha: 0.25].CGColor;
CGColorRef lightColor = [self.view.backgroundColor colorWithAlphaComponent:0.0].CGColor;
//setting some gradients here
//should not be relevant for the question
[cell setSelectedBackgroundView:bgColorView];
结果是这样的:
我现在的问题是,为什么
selectedBackgroundView
隐藏了contentView
的黑色部分?我已经尝试过使用从
bgColorView
开始的框架初始化x = 80
,但这不会改变任何内容。我也试图将
backgroundColor
的imageView
明确设置为黑色,结果相同。什么可能导致这种行为?
最佳答案
下图给出了单元结构的想法。所选的“背景” View 将隐藏“内容” View
因此,您可以通过将单元格的背景色设置为黑色来尝试一下。
您的自定义单元格看起来像这样
self.backgroundColor = [UIColor blackColor]; // Gives black background for you
// Set selected background view
UIView *backgroundView = [[UIView alloc]initWithFrame:self.bounds];
backgroundView.layer.borderColor = [[UIColor colorWithRed:0.529 green:0.808 blue:0.922 alpha:1]CGColor];
backgroundView.layer.borderWidth = 10.0f;
self.selectedBackgroundView = backgroundView;
[backgroundView release];
// Set the content view
CGRect frame = CGRectMake(self.bounds.origin.x+5, self.bounds.origin.y+5, self.bounds.size.width-10, self.bounds.size.height-10);
UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame];
self.imageView = imageView;
[imageView release];
self.imageView.contentMode = UIViewContentModeScaleAspectFill ;
self.imageView.clipsToBounds = YES;
[self.contentView addSubview:self.imageView];