Ios UIImageView在自调整大小的tableview单元格中适合最大宽度
需要设置哪些自动布局约束,以使tableview单元格中的图像扩展到单元格的宽度边界,如在Twitter应用程序中一样 我无法完成,不知道需要哪些约束和设置Ios UIImageView在自调整大小的tableview单元格中适合最大宽度,ios,swift,uitableview,uiimageview,autolayout,Ios,Swift,Uitableview,Uiimageview,Autolayout,需要设置哪些自动布局约束,以使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!
}