繁体   English   中英

如何在UITableViewCell中调整UIImageView的大小?

[英]How to resize UIImageView in UITableViewCell?

我想在单元格中显示图像,并且因为我需要先下载它,所以我想显示(为简单起见)具有与图像相同的宽度和高度的黑色视图。

因为我想将图像拉伸到与单元格宽度相同的宽度,所以我只需要设置纵横比即可设置高度,这在调用cellForRowAt时在我的代码中提供。

我决定在下载图像之前实现“黑视图”,我只需要一个具有黑色背景的UIImageView,并在调用cellForRowAt时调整其大小。 但这是问题所在,因为使用类似问题的代码对我不起作用。

我在cellForRowAt方法中尝试过这样的事情:

var frame cell.imageView.frame
frame.size.height = CGFloat(aspectRatio) * frame.size.width
cell.imageView.frame = frame

编辑

结果,我想要像facebook这样的东西,其中我们的照片具有与单元格相同的宽度和与宽高比相对应的高度。 为简单起见,单元格只能具有UIImageView。

由于您使用的是自动布局,因此在情节提要中应设置以下两项:

  • 首先,将UIImageView的宽度设置为单元格的完整宽度
  • 其次,将UIImageView宽高比设置为1:1-这表示高度始终与宽度相同。

如果您要使用UITableView自动尺寸”作为单元格高度,那么这应该就足够了; 任何地方都没有代码,其他一切都正常。

如果您没有使用自动像元高度功能,则如果它们都相同,或者使用相同的像元,或者使用self.tableView.rowHeight = self.tableView.bounds.size.width设置一次像元高度。不同的高度:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

    if (<indexPath IS IMAGE ROW>) 
        return tableView.bounds.size.width
    return <default height>
}

在我写过<indexPath IS IMAGE ROW> ,应将其替换为需要检测该特定单元格是否为图像类型的任何条件。 另外,正如Rikh所指出的那样,在我写<default height> ,应将其替换为非图像类型的单元格的高度。 当然,您的桌子可能设计得更加复杂。 这仅涵盖了您要询问的情况。

这是我的解决方案

imageView.contentMode = UIViewContentModeCenter;
if (imageView.bounds.size.width > ((UIImage*)imagesArray[i]).size.width && imageView.bounds.size.height > ((UIImage*)imagesArray[i]).size.height) {
       imageView.contentMode = UIViewContentMode.ScaleAspectFit;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM