我的UITableViewCell
只包含UIImageView
。我正在使用UITableViewAutomaticDimension,它非常适用于我的tableview中的所有其他单元格,除了这个图像视图单元格。
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
我希望图像尽可能高,保持图像的纵横比并填充宽度。为此,我将图像视图的约束设置为使用自动布局固定到单元格的框架,并将图像视图contentMode设置为Aspect Fit。我将UIImageView的背景设置为红色。它上面的细胞是白色的。实际图像在下方是黑色的。
当我这样做时,细胞比图像高约100 px,低于100px。但图像大小正是我想要的。有没有人有同样的问题?
因为红色空间并不总是相同的尺寸,当我在那里有一个非常大的图像时它更高,我相信布局认为高度应该是图像的实际高度,没有任何方面适合约束
感谢您的帮助!
答案 0 :(得分:2)
我希望图像尽可能高,保持图像的宽高比并填充宽度。为此,我将图像视图的约束设置为使用自动布局固定到单元格的帧,并将图像视图contentMode设置为Aspect Fit。
只有自动布局才能做到这一切。这是因为UIImageView
的内在内容大小只是其图片的完整尺寸。
相反,计算合适的高度并在设置图像时进行设置:
let imageViewWidth : CGFloat = // the width you want…
imageHeightConstraint.constant = image.size.height / image.size.width * imageViewWidth;
请注意,如果由于除零而导致0x0图像,则会失败。如果您的应用程序可以使用,请检查此情况并将高度常量设置为0.
此时,重新加载行,以便表格视图重新计算高度。