不正确的UITableViewCell高度UIImageView

问题描述 投票:1回答:1

我有一个仅包含UITableViewCellUIImageView。我正在使用UITableViewAutomaticDimension,它对于我的tableview中的所有其他单元格都可以正常工作,除了该图像视图单元格。

 tableView.estimatedRowHeight = 100
 tableView.rowHeight = UITableViewAutomaticDimension

我希望图像高到想要的高度,保持图像的纵横比并填充宽度。为此,我使用自动布局将图像视图的约束条件设置为固定到单元格的框架,并将图像视图的contentMode设置为Aspect Fit。我将UIImageView的背景设置为红色。上面的单元格是白色的。实际图像在下面是黑色的。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8yY2NKaGwucG5nIn0=” alt =“在此处输入图像描述”>

[当我这样做时,单元格在图像上方约100像素,在图像下方约100像素。但是图像大小正是我想要的。有人遇到过同样的问题吗?

因为红色空间的大小并不总是相同,并且当我有一个很大的图像时它会高很多,所以我相信布局认为高度应为图像的实际高度,而没有任何宽高比限制。

感谢您的帮助!

swift uitableview ios8 uiimageview height
1个回答
2
投票

我希望图像高到想要的高度,保持图像的纵横比并填充宽度。为此,我使用自动布局将图像视图的约束条件设置为固定到单元格的框架,并将图像视图的contentMode设置为Aspect Fit。

您不能仅靠自动布局来完成所有这些工作。这是因为UIImageView的固有内容大小只是其图像的完整大小。

相反,计算适当的高度并在设置图像时进行设置:

let imageViewWidth : CGFloat = // the width you want…
imageHeightConstraint.constant = image.size.height / image.size.width * imageViewWidth;

请注意,如果您使用0x0图像,则由于被零除,这将失败。如果您的应用程序有此可能,请检查这种情况,然后将高度常数设置为0。

这时,重新加载行,以便表视图将重新计算高度。

© www.soinside.com 2019 - 2024. All rights reserved.