答案 0 :(得分:3)
您应该设置前导,尾随,顶部和底部约束。因此,width
将根据屏幕宽度调整大小,height
将根据图像的宽高比进行设置,因为您的单元格具有动态高度。
答案 1 :(得分:1)
我只关注宽度限制(前导和尾随),但您也可以以类似的方式调整其他约束。底部。
此外,您可能希望更改图像视图以支持此功能,但这取决于您使用的图像。我选择了Aspect Fill以确保它使用了整个宽度。如果您的图像尺寸不合适,此设置将裁剪顶部&它的底部。
请注意,在“添加新约束”窗口中,左侧&右侧框有一条红色实线,表示它们已被选中。
您可以根据需要调整imageView,以便根据需要提供一些填充,例如在链接图像中也可以看到。设置约束的方法仍然是相同的,只是框中的值会有所不同。
答案 2 :(得分:1)
首先,您应该知道当您使用“UITableViewAutomaticDimension”设置单元格的高度时,单元格中的UIImageView无效。
如果您设置了'身高限制'并改变它的价值将起作用。
因此,设置“领先'”,'''' top'' bottom'和'身高'图像视图的约束
如果您的图片已下载,请将其缩小并进行数学计算并设置“高度限制”。用它。
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
return UITableViewAutomaticDimension
}
func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat
{
return UITableViewAutomaticDimension
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "list")
if let iv = cell?.contentView.viewWithTag(1) as? UIImageView
{
// this UIImageView.image(url: URL, placeHolder: UIImage, complete: (UIImage)->()) is my custom function.
// you can use SDWebImage's function
iv.image(url: URL(string: "http://imageurl")!, placeHolder: nil, complete: { (img) in
// calculate imageview's height
let ivHeight = (iv.frame.size.width * img.size.height) / img.size.width
// get height constraint and set the value.
for lc in iv.constraints
{
if lc.firstAttribute == .height
{
// this will change cell's height automatically
lc.constant = ivHeight
break
}
}
})
}
return cell!
}
抱歉我的英语不好。 :(