6

所以我在我的UITableViewCell.

我的单元格contentView基本上是一个UIView(frame = 0,0,80,70),具有黑色背景和UIImageView一个子视图。

图像视图的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使用从 开始的框架初始化 my x = 80,但这并没有改变任何东西。

我也试图明确地将 的 设置backgroundColorimageView黑色,结果相同。

什么可能导致这种行为?

4

2 回答 2

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];
于 2013-03-11T12:17:54.103 回答
0

也许你可以尝试覆盖

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated

- (void)setSelected:(BOOL)selected animated:(BOOL)animated

UITableViewCell 类以获得所需的行为。

于 2013-03-11T12:06:50.840 回答