UITableview 填充图像:图像之间的空间太大

Posted

技术标签:

【中文标题】UITableview 填充图像:图像之间的空间太大【英文标题】:UITableview filled with images: too much space between images 【发布时间】:2017-06-15 11:56:10 【问题描述】:

我尝试制作一个充满图片的表格视图。这是我想要的和我的限制:

图片的宽高比为 3:2

cell.width 中的图像 = cell.height 中的图像,乘数为 3:2

图片的宽度要占整个屏幕宽度

cell.centerX 中的图像 = Superview.centerX

cell.width 中的图像 = Superview.width

Table View.Center X = Superview.Center X

表格 View.width = Superview.width

图片间距应为 8

Cell.Bottom = Cell.Bottom + 8 中的图像

其他限制:

table view.top = top layout guide.bottom

table view.bottom = red block.top

这就是我得到的:

我有三张图片,一张在屏幕上可见,另外两张在滚动时可见。 我在屏幕底部也有一个红色块。表格视图在红色块的后面。

我的问题是每张图片都有一个空白区域。我猜它来自与我的图片高度不匹配的内容视图或单元格高度,但我没有设法使它正确。

通过一些更改,我在图片之间获得了正确的空间,但“屏幕上”的纵横比不再受到尊重(= 图片宽度似乎超过了屏幕宽度)。如果我在 Cell.height 中添加 cell.height = Image 会发生这种情况。而且我还得到了 aspect = 3:2、height = Image in Cell.height、Image in Cell.width = width 和 height = 400 的冲突约束。

你看出什么问题了吗?

谢谢,

亚历克斯

【问题讨论】:

【参考方案1】:

您是否静态设置了 tableView 的 rowHeight?我认为它应该是动态的,因为在不同的屏幕上,单元格的高度会根据纵横比的不同而不同。

将此代码添加到您的 viewDidLoad。这将有助于使您的 tableView 单元格高度动态化:

self.tableView.rowHeight = UITableViewAutomaticDymension
self.tableView.estimatedRowHeight = 60;

为了让tableView计算单元格高度,添加imageView顶部约束到superView(cell)到0。

实际上,如果您希望单元格在不同屏幕上为静态高度,只需删除您的 aspectRatio 约束,添加 imageView heightConstraint 等于单元格。它也将起作用。

【讨论】:

我不想要静态高度,我想要 3:2 的纵横比。我没有在我的代码中添加任何关于 rowHeight 的内容,所以我猜这是“静态的”。在情节提要中,我的表格视图的行高属性是 400,相反我想尊重纵横比并采用所有屏幕宽度,不管高度是多少。我已在 viewDidLoad 中添加了您的代码,并在 Cell.top = cell.top 中添加了约束图像,图像之间的空间是正确的,但不遵守纵横比(高度非常小),并且我得到了冲突的约束。 好的!现在的问题在您的约束中。你是什​​么意思说cell.top = cell.top。实际上,你需要 cell.top = cell.imageView.top。就像你的 imageView 应该坚持 superView 的顶部边缘 如果它不起作用。尝试删除单元格中的所有约束,仅将 imageView(3:2) 的 AspectRatio 和 imageView 边缘添加到 superView(0 到顶部、左右和 8 到底部) 是的,我有 cell.top = cell.imageView.top,抱歉打错了。我删除了我的约束并添加了告诉我只添加的内容。它更简单,现在可以使用 :) 谢谢 Irzhan!

以上是关于UITableview 填充图像:图像之间的空间太大的主要内容,如果未能解决你的问题,请参考以下文章

Swift 在 UITableView 中异步加载图像 - 顶部单元格没有图片

使用 Json 图像 URL 调用 swift 填充 UITableView

如何使 UITableView 不改变 imageView 的框架,或调整图像大小以填充框架大小?

裁剪图像,然后拉伸以填充可用空间

聚焦时如何用图像填充 LWUIT 按钮?

使图像填充剩余的垂直空间,不滚动