用表格视图单元格 SWIFT 中的图像制作列表的正确方法

Posted

技术标签:

【中文标题】用表格视图单元格 SWIFT 中的图像制作列表的正确方法【英文标题】:Right way to make a list with images inside a tableview cell SWIFT 【发布时间】:2018-08-13 20:56:21 【问题描述】:

我目前有一个 UITableView,其中每个单元格都包含一个用户列表。我目前使用 UITextView 设置它,并在每个名称后换行。然后我根据组中的人数设置单元格高度。这很好,但现在我想添加每次使用的个人资料图片。这是我提出的两种可能的解决方案。

    每个表格视图单元格内的表格视图 使用this 之类的方法将图像作为文本添加并保留当前的文本视图。我相信这将是更好/更有效的选择。

这两个或其他选项中的哪种方法是正确/或最有效的方法。

更新:我正在尝试从下面实现一个解决方案,这是我尝试过的,但运行时我什么也没看到

在 Storyboard 中添加堆栈视图

创建用户视图类

import UIKit

@available(ios 9.0, *)
class UserView: UIStackView 
    var name: String?
    var image: UIImage? // OR var imageName: String?

    override init(frame: CGRect) 
        super.init(frame: frame)
        setup()
    

    required init(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)
        setup()
    

    private func setup() 
        axis = .vertical

        let imageView = UIImageView(image: image)
        let nameLabel = UILabel()
        nameLabel.text = name

        addArrangedSubview(imageView)
        addArrangedSubview(nameLabel)
    

行在索引路径的单元格中的代码

        cell.mainStackView.frame = CGRect(x: 0, y: 0, width: cell.cellColor.frame.width, height: cell.cellColor.frame.height)

        for i in 0..<joinedArray.count 
            let user = UserView()
            user.name = joinedArray[i]
            cell.mainStackView.addArrangedSubview(user)
        

【问题讨论】:

您希望在列表中支持的最大用户数是多少? 上限可能在 20 左右 不显示代码图片。显示代码 @matt 谢谢我已经相应更新了 【参考方案1】:

我更喜欢 UITableViewCell 中的 UIStackView 和 UIStackView 作为每个用户条目的子视图

下面提到的东西

class UserView: UIStackView 
    var name: String?
    var image: UIImage? // OR var imageName: String?

    override init(frame: CGRect) 
        super.init(frame: frame)
        setup()
    

    required init(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)
        setup()
    

    private func setup() 
        axis = .vertical

        let imageView = UIImageView(image: image)
        let nameLabel = UILabel()
        nameLabel.text = name

        addArrangedSubview(imageView)
        addArrangedSubview(nameLabel)
    

【讨论】:

你能多解释一下我将如何在我的项目中实现它,我真的不明白如何使用它。谢谢,感谢您的回复。 @user6520705 在您的 TableViewCell 中添加 UIStackView(即 mainStackView)。现在为每个用户以编程方式将 UserView UIStackView 添加到 mainStackView 在情节提要中,我向单元格添加了堆栈视图。然后我创建了一个类 UserView。在我的 cellforrowatindexpath 中,我循环遍历我的用户数组,并为每个用户创建一个新的 UserView 并执行 mainstackview.append 新的 UserView 但是当我构建和运行时我什么都看不到 @user6520705 如果还没有解决,这里是完整的解决方案gist.github.com/Satish/f973732730a24e08a4dd274d86c9e2d2【参考方案2】:

您可以尝试将UICollectionView 放入UITableViewCell 中,而不是将UITableView 放入UITableViewCell。从技术上讲,它是相同的,但是通过集合视图,您可以在不同布局中显示图像的方式上获得更多功能(假设每个UICollectionViewCell 为每个图像分别使用UIImageView)。 Ash Furrow 对此有一个非常好的blog post 以及相应的GitHub rep。

【讨论】:

以上是关于用表格视图单元格 SWIFT 中的图像制作列表的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

表格视图单元格中的滚动视图将无法正确显示图像,并且在 swift 4 中的分页模式下有一个额外的页面

Swift 表格视图,在表格视图单元格中播放视频,内存泄漏

iOS - 使用 Swift 在每个表格视图单元格中获取 JSON 提要

Swift - 表格视图中的单元格出现在另一个单元格上

应用于控制器的背景未应用于故事板swift中的表格视图单元格

带有透明单元格并显示背景图像的 Swift 表格视图