无法在tableViewCell中显示图像

时间:2013-05-17 20:38:03

标签: ios objective-c uitableview

我有一个带有分组单元格的表视图。我希望这个单元格中的一个包含图像。这是我的代码,用于插入图像并使其适合单元格:

             logoCell = [tableView dequeueReusableCellWithIdentifier:LogoCellIdentifier];
             if (logoCell == nil) {
                 logoCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:LogoCellIdentifier];
             }

             UIImageView *imgView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, logoCell.frame.size.width, 80)];
             [imgView setImage:image];

             [logoCell.contentView addSubview:imgView];

但是当显示tableView时,我的图像大于单元格的宽度。我怎样才能让它适合细胞?

3 个答案:

答案 0 :(得分:2)

将图像添加为tableViewCell的背景颜色,您将获得漂亮的圆角。否则,分组的单元格将不会掩盖图像。您还需要设置UIImageView的contentMode,以便将所有内容扩展到单元格中。

UIImageView *imgView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, logoCell.frame.size.width, 80)];
imgView.contentMode = UIViewContentModeScaleAspectFit;
cell.backgroundColor = [UIColor colorWithPatternImage:imgView.image];

答案 1 :(得分:1)

如何向UITableViewCell添加图片视图取决于您尝试对图片视图执行的操作。如果您想让图像成为单元格内容的一部分,请在创建单元格时添加它。

logoCell = [tableView dequeueReusableCellWithIdentifier:LogoCellIdentifier];
if (logoCell == nil) {
    logoCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:LogoCellIdentifier];

    // ADD IMAGEVIEW ONLY WHEN CREATING CELL
    UIImageView *imgView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, logoCell.frame.size.width, 80)];
    [logoCell.contentView addSubview:imgView];

    // DONT ALLOW IMAGE OVERFLOW
    imgView.clipsToBounds = YES;
}

// SET YOUR IMAGE EVERY TIME
[imgView setImage:image];

如果您尝试将其设置为背景视图,则应在backgroundView中设置单元格的tableView:willDisplayCell:forRowAtIndexPath属性。确保图像视图与单元格大小相同。

UIImageView *imgView = [[UIImageView alloc] initWithFrame: cell.bounds];
imgView.image = image;
cell.backgroundView = imgView;

答案 2 :(得分:0)

以这种方式创建UIImageView

UIImageView *imgView = [[UIImageView alloc] initWithImage:image];
imgView.frame = CGRectMake(0, 0, logoCell.frame.size.width, 80);

附注 - 确保每次都不向单元格添加新的UIImageView。您只想添加一次。滚动时,单元格会被重用。根据您实现代码的方式,您可以轻松地向单元格添加多个图像视图。