UITableview 填充图像:图像之间的空间太大
Posted
技术标签:
【中文标题】UITableview 填充图像:图像之间的空间太大【英文标题】:UITableview filled with images: too much space between images 【发布时间】:2017-06-15 11:56:10 【问题描述】:我尝试制作一个充满图片的表格视图。这是我想要的和我的限制:
图片的宽高比为 3:2cell.width 中的图像 = cell.height 中的图像,乘数为 3:2
图片的宽度要占整个屏幕宽度cell.centerX 中的图像 = Superview.centerX
cell.width 中的图像 = Superview.width
Table View.Center X = Superview.Center X
表格 View.width = Superview.width
图片间距应为 8Cell.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