我有一个自定义单元格的表视图,我在其中显示图像。 图像视图的内容模式是AspectFit,因此我可以以正确的宽高比查看整个图像。 图像视图被约束到超视图,但也具有最大高度约束。
当我的图像根据内容模式重新调整大小并因此低于原始尺寸时,我希望图像视图的高度像重新调整大小的图像一样,而不是像原始图像。
我有一个示例项目(请参见下面的屏幕截图和下载链接),您可以在其中看到当前的行为:黄色和绿色单元格具有正确的顶部和底部空间,蓝色单元格高150磅,但应该小于具有相同的顶部和底部空间。在屏幕截图中,您可以看到额外的顶部和底部空间只是空的。
这是我的示例项目(Swift 3):
https://www.dropbox.com/s/16i48qnm54fktdk/Test.zip?dl=0
有人知道如何解决这个问题吗?
答案 0 :(得分:0)
您可以做的一件事是将imageViews垂直和水平对齐在superView的中心,并为其指定虚拟宽度和高度。在单元内设置宽度和高度限制的出口。然后,您可以调整图像大小以适应屏幕白色的宽度,保持纵横比,并将imageView高度和宽度设置为图像的大小。在heightForRowAtIndexPath
中,您必须根据调整大小后imageView.size.height
获得的值来设置单元格的高度
编辑:事后看来,这似乎是一种解决方法,也许其他人可能知道更好的方法。
答案 1 :(得分:0)
不幸的是,sizeToFit()
无法在UIImageView
上工作。但是,您可以将testImageViewHeightConstraint
设置为图片的高度。
if let imageHeight = cell.testImageView.image?.size.height, imageHeight < cell.testImageViewHeightConstraint.constant {
print(imageHeight) // this is not the correct height of your image
cell.testImageViewHeightConstraint.constant = //your image height
}
但是,应用aspectFit后无法获得图像高度。获得它的唯一方法是自己实现自定义功能。你可以看到这篇文章:How to know the image size after applying aspect fit for the image in an UIImageView
您可以先将testImageViewHeightConstraint.constant
设置为50,以确保我的建议有效:)