繁体   English   中英

为什么自定义表格视图单元格中的UIImageView具有内容模式AspectFit的原始高度?

[英]Why UIImageView in self-sizing table view cell has original height with content mode AspectFit?

我有一个自定义单元格的表视图,我在其中显示图像。 图像视图的内容模式是AspectFit,因此我可以以正确的宽高比查看整个图像。 图像视图被约束到超视图,但也具有最大高度约束。

当我有一个根据内容模式重新调整大小并因此低于原始大小的图像时,我希望图像视图的高度像重新调整大小的图像而不是原始图像。

我有一个示例项目(见下面的屏幕截图和下载链接),您可以看到当前行为:黄色和绿色单元格具有正确的顶部和底部空间,蓝色单元格高150磅但是顶部相同应该更少和底部空间。 在屏幕截图中,您可以看到额外的顶部和底部空间只是空的。

在此输入图像描述

这是我的示例项目(Swift 3):

https://www.dropbox.com/s/16i48qnm54fktdk/Test.zip?dl=0

有没有人知道如何解决这个问题?

您可以做的一件事是将imageViews垂直和水平对齐在superView的中心,并为其指定虚拟宽度和高度。 在单元内设置宽度和高度限制的出口。 然后,您可以调整图像大小以适应屏幕白色的宽度,保持纵横比,并将imageView高度和宽度设置为图像的大小。 heightForRowAtIndexPath您必须根据调整大小后为imageView.size.height获取的值来设置单元格的高度

编辑:事后看来,这似乎是一种解决方法,也许其他人可能知道更好的方法。

不幸的是, 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后无法获得图像高度。 获得它的唯一方法是自己实现自定义功能。 您可以看到这篇文章: 如何在UIImageView中应用适合图像的宽高比后知道图像大小

您可以testImageViewHeightConstraint.constant设置为50,以确保我的建议正常工作:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM