首页 > 解决方案 > 将项目水平附加到 tableView 单元格中,但不会填满所有空间

问题描述

我有一个想要实现的特定设计,对我来说似乎并不复杂,但我正在努力实现它。

首先设计看起来像这样:

所以,我有一个包含图片的项目的表格视图,然后是标题,然后是三个项目的集合,这些项目将是 ImageViews。

所有这些都在一个单元格和一个 stackView 内。

我尝试制作一个水平堆栈视图并设法正确附加我的项目,但它在设计方面出现了可怕的错误,因为我的图像视图一直水平拉伸。我想这是不可能不拉伸这些物品的。

我还尝试在表格视图中添加一个集合视图,但发现对于这个基本的东西来说这是非常复杂的(我猜应该是这样)。然后,我来了。

这是我的代码,我被困在哪里:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = debateList.dequeueReusableCell(withIdentifier: "itemsBox", for: indexPath) as! ItemBox
        
        // Make a variable with 3 participants
        let participants = tableView[indexPath.row].participants?.prefix(3)
        // iterate over them and adding them to anything that can be doable
        participants?.forEach { participant in
            let imageView = UIImageView()
            let imageUrl = URL(string: participant.imageURL)
            imageView.kf.setImage(with: imageUrl)
            // Here add item to something
        }
        
        return cell
    }

我被困住了,对于这么小的东西来说太久了。我猜我对自己不知道该怎么做有点不高兴。

标签: iosswiftuitableview

解决方案


首先,如果它们是 3 个静态图像,那么最好将它们制作在内部设计中,并将图像 url 分别分配给它们的网点

其次,对于您当前的工作,您需要添加一个宽度约束(关于高度,当它是水平堆栈时,它们将适合所有堆栈高度),例如

imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.widthAnchor.constraint(equalToConstant: 50).isActive = true

推荐阅读