所以我遇到了在UITableViewCell
内设置custum selectedBackgroundView的问题。
我的单元格有contentView
,基本上是UIView
(frame = 0,0,80,70),背景为黑色,UIImageView
为子视图。
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
的{{1}}设置为黑色,结果相同。
什么可能导致这种行为?
答案 0 :(得分:23)
下图给出了细胞结构的概念。选定的背景视图将隐藏内容视图
因此,您可以尝试将单元格的背景颜色设置为黑色。 您的自定义单元格看起来像这样
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];
答案 1 :(得分:-1)
可能你可以尝试覆盖
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
和
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
UITableViewCell类的以获得所需的行为。