如何在uitableviewcell中添加uiview

时间:2015-05-07 09:55:18

标签: objective-c uitableview

希望你们所有人都没事。 我的申请中有一点问题。我有自定义单元格的tableview。在我的自定义单元类中,我制作了一个uiview



    UIView* cellView = [[UIView alloc] initWithFrame:self.contentView.frame];
    cellView.backgroundColor = [UIColor grayColor];
    [self.contentView addSubview:cellView];



 问题是uiview不适合我的细胞框架。 Cellforrow如下:



- (SummaryViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"cell";
    SummaryViewCell *cell = (SummaryViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if(cell == nil)
    {
        cell = [[SummaryViewCell alloc] init];
    }
    
    cell.backgroundColor = [UIColor blueColor];
  return cell;
}




我试过initWithFrame:self.contentView.frame]但是同样的问题发生了(uiview出现在单元格中,但只覆盖了一半的单元格),我也尝试过cellView = [[UIView alloc] initWithFrame:CGRectMake(0,0 ,self.frame.size.width和高度相同但是失败了。需要您宝贵的建议和想法。非常感谢。

2 个答案:

答案 0 :(得分:5)

你在哪里创建子视图? 尝试在-layoutSubviews方法中执行此操作。

- (void)layoutSubviews {
    [super layoutSubviews];

UIView* cellView = [[UIView alloc] initWithFrame:self.contentView.frame];
    cellView.backgroundColor = [UIColor grayColor];
    [self.contentView addSubview:cellView];
}

子视图的所有帧都已在此方法中计算,您应该为子视图获得正确的宽度\高度。

答案 1 :(得分:1)

您可以尝试将剪辑设置为边界

[cellView setClipsToBounds:YES];