自定义 UITableViewCell 中不同的 UIImage 大小

Posted

技术标签:

【中文标题】自定义 UITableViewCell 中不同的 UIImage 大小【英文标题】:Different UIImage sizes in custom UITableViewCell 【发布时间】:2010-11-24 02:33:59 【问题描述】:

我正在从互联网上下载一些图像,它们来自几个不同的位置,所有图像的尺寸都未知且不同。

我已经成功地让它们都很好地延迟加载,并在下载时出现在我创建的自定义 UITableViewCell 中,其中有一个 UIImageView(cellImageView 宽度 320,高度 100)。

我正在设置表格的单元格并调整行高,如下所示:

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath 

    ImageDownloader *download = [imagesModel.downloads objectAtIndex:[indexPath row]];

    if (download.image) 
    
        CGFloat scaleFactor = 320.0f / download.image.size.width;
        CGFloat heightScaled = (scaleFactor * download.image.size.height); 

        return heightScaled;
    
        return 100.0f;



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

    ImageTableCell *cell = (ImageTableCell *)[tableView dequeueReusableCellWithIdentifier:[ImageTableCell reuseIdentifier]];

    if (cell == nil) 
    
        [[NSBundle mainBundle] loadNibNamed:@"ImageTableCell" owner:self options:nil];
        cell = loadCell;
        self.loadCell = nil;
    
    ImageDownloader *download = [imagesModel.downloads objectAtIndex:[indexPath row]];

    if (download.image == nil)
    
        download.delegate = self;
    

    cell.cellImageView.image = download.image;

    return cell;

问题是我无法让单元格正确显示。我玩过 UIImageView 的 contentMode 并发现 AspectFill 工作正常,但将所有内容向上推,导致剪切和遮罩,并在不应该的时候拉伸一些图像。使用 Top 解决了垂直问题,但 TableViewCell 不适合图像(有时图像太大。

解决办法是调整Table的行、自定义TableViewCell、UIImage UIImage吗?也许创建我自己的缩放功能?

【问题讨论】:

【参考方案1】:

您是在 IB 中还是在 xcode 中创建了 UITableViewCell?如果在 xcode 中,我会对查看 layoutSubviews 方法感兴趣。

【讨论】:

在 IB 中,它使用自定义 UITableViewCell 类,在视图中使用 UIView 然后是 UIImageView。 您可能想看看 IB 布局部分中的弹簧和支柱,检查您是否已设置它们,因为如果您稍后更改 tableView 行的高度,这可能会导致意外更改.【参考方案2】:

原来自定义的 TableViewCell,它的视图和 UIImageView 的高度都略有不同,导致结果一团糟。

【讨论】:

以上是关于自定义 UITableViewCell 中不同的 UIImage 大小的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 为不同的方向和单元格类型加载自定义 XIB

自定义 UITableViewCell 打开不同的 xib 子视图

改变自定义uitableviewcell内容在不同方向的位置

如何配置 cellForRowAtIndexPath 以处理两种不同的自定义 UITableViewCell 类型

自定义UITableViewCell

UITableViewCell 在自定义单元格中具有备用背景颜色