我有一个仅包含UITableViewCell
的UIImageView
。我正在使用UITableViewAutomaticDimension
,它对于我的tableview中的所有其他单元格都可以正常工作,除了该图像视图单元格。
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
我希望图像高到想要的高度,保持图像的纵横比并填充宽度。为此,我使用自动布局将图像视图的约束条件设置为固定到单元格的框架,并将图像视图的contentMode设置为Aspect Fit。我将UIImageView的背景设置为红色。上面的单元格是白色的。实际图像在下面是黑色的。
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8yY2NKaGwucG5nIn0=” alt =“在此处输入图像描述”>
[当我这样做时,单元格在图像上方约100像素,在图像下方约100像素。但是图像大小正是我想要的。有人遇到过同样的问题吗?
因为红色空间的大小并不总是相同,并且当我有一个很大的图像时它会高很多,所以我相信布局认为高度应为图像的实际高度,而没有任何宽高比限制。
感谢您的帮助!
我希望图像高到想要的高度,保持图像的纵横比并填充宽度。为此,我使用自动布局将图像视图的约束条件设置为固定到单元格的框架,并将图像视图的contentMode设置为Aspect Fit。
您不能仅靠自动布局来完成所有这些工作。这是因为UIImageView
的固有内容大小只是其图像的完整大小。
相反,计算适当的高度并在设置图像时进行设置:
let imageViewWidth : CGFloat = // the width you want…
imageHeightConstraint.constant = image.size.height / image.size.width * imageViewWidth;
请注意,如果您使用0x0图像,则由于被零除,这将失败。如果您的应用程序有此可能,请检查这种情况,然后将高度常数设置为0。
这时,重新加载行,以便表视图将重新计算高度。