UITableViewCell高度不正确UIImageView

时间:2015-06-13 22:12:00

标签: swift uitableview ios8 uiimageview height

我的UITableViewCell只包含UIImageView。我正在使用UITableViewAutomaticDimension,它非常适用于我的tableview中的所有其他单元格,除了这个图像视图单元格。

 tableView.estimatedRowHeight = 100
 tableView.rowHeight = UITableViewAutomaticDimension

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

enter image description here

当我这样做时,细胞比图像高约100 px,低于100px。但图像大小正是我想要的。有没有人有同样的问题?

因为红色空间并不总是相同的尺寸,当我在那里有一个非常大的图像时它更高,我相信布局认为高度应该是图像的实际高度,没有任何方面适合约束

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

  

我希望图像尽可能高,保持图像的宽高比并填充宽度。为此,我将图像视图的约束设置为使用自动布局固定到单元格的帧,并将图像视图contentMode设置为Aspect Fit。

只有自动布局才能做到这一切。这是因为UIImageView的内在内容大小只是其图片的完整尺寸。

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

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

请注意,如果由于除零而导致0x0图像,则会失败。如果您的应用程序可以使用,请检查此情况并将高度常量设置为0.

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