如何获得的UITableViewCell透明附件查看? (W /截图)(How to get T

2019-07-20 10:01发布

我用一个自定义的UITableViewCell从笔尖。 附件视图是详细披露指标。 的问题是,所述的UITableViewCell的附属视图后面的背景颜色是没有得到呈现(见下文图像/来源)。 任何线索? 另外,这里有一些东西,我试过,但没有工作:

事情没有工作:
- 设置的backgroundColor附属视图来clearColor
- 设置contentView.opaque细胞为FALSE
- 设置contentView.opaque表格视图为FALSE
- 设置非默认的附件视图细胞


替代文字http://www.chicknchoke.com/so/IMG_8028.png

    -(void)showTablePrep
    {
        myTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 480, 320, 416) style:UITableViewStylePlain];
        myTableView.dataSource = self;
        myTableView.delegate = self;
        myTableView.delaysContentTouches = FALSE;
        myTableView.opaque = FALSE;
        myTableView.rowHeight = 60;

        [UIView beginAnimations:@"SlideUp" context:nil];
        [UIView setAnimationDuration:0.3f];

        [myTableView setCenter:CGPointMake(myTableView.center.x, myTableView.center.y-436)];
        [self.view addSubview:myTableView];
        [self.view bringSubviewToFront:myTableView];

        [UIView commitAnimations];


    }




- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    FriendsCell* cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCellID"];

    if (cell == nil){

        NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"FriendsCellView" owner:self options:nil];

        cell = (FriendsCell*)[nib objectAtIndex:0];

        if(indexPath.row % 2 == 0){

        cell.contentView.backgroundColor = [UIColor grayColor];


        }else{

        cell.contentView.backgroundColor = [UIColor lightGrayColor];


        }
        cell.accessoryView.backgroundColor = [UIColor clearColor];
        cell.contentView.opaque = FALSE;
        cell.selectionStyle = UITableViewCellSelectionStyleNone;


    if(f

riendsCounter > indexPath.row){


            cell.titleLabel.text = @"Label";
            cell.descLabel.text = @"Description goes here";

        }else{

            cell.titleLabel.text = @"";
            cell.descLabel.text = @"";
            cell.accessoryType = UITableViewCellAccessoryNone;

        }

        }

        return cell;    
    }

Answer 1:

您正在绘制的背景色你的错误。 甲UITableViewCell将被布置成使得所述contentViewaccessoryView坐并排侧。 (这样做是为了使contentView可以剪辑的内容,因此不会与附属视图重叠)的问题不在于附属视图是不透明的,它是灰色的背景下根本就没有附属视图后面绘制。

定制背后绘制的背景的正确方法UITableViewCell是自定义其backgroundView 。 我没有试过,但是,因为你只改变颜色,你也许可以简单地设置backgroundColor上的颜色backgroundView到您想要的颜色。



Answer 2:

我由具有看看我定制表格视图单元格的子视图找到了答案。

这似乎是附属视图有一个按钮坐在了它。 通过寻找在子视图此按钮,改变其颜色,我能更新附件按钮后面的背景颜色。

<UIButton: 0x3b4d690; frame = (277 0; 43 75); opaque = NO; layer = <CALayer: 0x3b3e0b0>>

for (UIView *aSubView in self.subviews) {
    if ([aSubView isMemberOfClass:[UIButton class]]) {
        aSubView.backgroundColor = [UIColor greenColor];
    }
}

不幸的是我只能内达到这个按钮

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

我的自定义表视图细胞类的方法。 我已经成功地使用这个我的应用程序中,当用户选择一个单元格以显示不同的高亮颜色。 这应该指向你在正确的方向。



Answer 3:

我决心在iOS7但添加这个问题

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

和您修改的背景和其他在这里bakcgrounds:

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

- (void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    // Add your Colour.
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    [cell setBackgroundColor:[UIColor colorWithHexColor:HIGHLIGHT_COLOR]];
}

- (void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    // Reset Colour.
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    [cell setBackgroundColor:[UIColor colorWithHexColor:UNHIGHLIGHT_COLOR]];   
}


文章来源: How to get Transparent Accessory View in UITableViewCell? (w/ Screenshot)