Ios UIImageView在自调整大小的tableview单元格中适合最大宽度

Ios UIImageView在自调整大小的tableview单元格中适合最大宽度,ios,swift,uitableview,uiimageview,autolayout,Ios,Swift,Uitableview,Uiimageview,Autolayout,需要设置哪些自动布局约束,以使tableview单元格中的图像扩展到单元格的宽度边界,如在Twitter应用程序中一样 我无法完成,不知道需要哪些约束和设置 您应该设置前导、尾随、顶部和底部约束。因此,宽度将根据屏幕宽度调整大小,高度将根据图像的纵横比进行设置,因为单元格具有动态高度。您应该设置前导、尾随、顶部和底部约束。因此,宽度将根据屏幕宽度调整大小,高度将根据图像的纵横比进行设置,因为您的单元格具有动态高度。我只关注宽度约束(前导和尾随),但您也可以以类似的方式调整顶部和底部的其他约束 此

需要设置哪些自动布局约束,以使tableview单元格中的图像扩展到单元格的宽度边界,如在Twitter应用程序中一样

我无法完成,不知道需要哪些约束和设置


您应该设置前导、尾随、顶部和底部约束。因此,
宽度
将根据屏幕宽度调整大小,
高度
将根据图像的纵横比进行设置,因为单元格具有动态高度。

您应该设置前导、尾随、顶部和底部约束。因此,
宽度
将根据屏幕宽度调整大小,
高度
将根据图像的纵横比进行设置,因为您的单元格具有动态高度。

我只关注宽度约束(前导和尾随),但您也可以以类似的方式调整顶部和底部的其他约束

此外,您可能希望更改图像视图以支持此操作,但这取决于您使用的图像。我选择了Aspect Fill以确保它使用了整个宽度。如果图像大小不正确,此设置将裁剪图像的顶部和底部

请注意,在“添加新约束”窗口中,左侧和右侧框有一条红色实线,表示它们已被选中


如果需要,可以调整imageView以提供一些填充,例如在链接图像中看到的填充。设置约束的方法仍然是相同的,只是框中的值不同。

我只关注宽度约束(前导和尾随),但您也可以以类似的方式调整顶部和底部的其他约束

此外,您可能希望更改图像视图以支持此操作,但这取决于您使用的图像。我选择了Aspect Fill以确保它使用了整个宽度。如果图像大小不正确,此设置将裁剪图像的顶部和底部

请注意,在“添加新约束”窗口中,左侧和右侧框有一条红色实线,表示它们已被选中


如果需要,可以调整imageView以提供一些填充,例如在链接图像中看到的填充。设置约束的方法仍然是相同的,只是框中的值会有所不同。

首先,您应该知道,当您使用“UITableViewAutomaticDimension”设置单元格高度时,单元格中的UIImageView并不像您想象的那样工作

如果设置“高度约束”并更改其值,则该约束将起作用

因此,在图像视图中设置“前导”、“尾随”、“顶部”、“底部”和“高度”约束

如果你下载了你的图像,得到它的大小,做数学运算,并用它设置“高度限制”


对不起,我的英语不好(

首先,您应该知道,当您使用“UITableViewAutomaticDimension”设置单元格高度时,单元格中的UIImageView并不像您想象的那样工作

如果设置“高度约束”并更改其值,则该约束将起作用

因此,在图像视图中设置“前导”、“尾随”、“顶部”、“底部”和“高度”约束

如果你下载了你的图像,得到它的大小,做数学运算,并用它设置“高度限制”

对不起,我的英语不好(

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!
}