在 Swift 中以编程方式在 UITableViewCell 中创建一个 UICollectionView

Make a UICollectionView in UITableViewCell programmatically in Swift

我有一个 tableview 单元格的子类,它需要在其中包含一个 UICollectionView。我现在在尝试添加 UICollectionView 时遇到问题。它让我添加一个新的 UICollectionView 但我无法设置它的约束。下面是我执行相同操作的代码:

// Add Collection
    let layout = UICollectionViewFlowLayout()
    layout.sectionInset = UIEdgeInsets(top: 20, left: 10, bottom: 10, right: 10)

    collectionProducts = UICollectionView(frame: CGRect.zero, collectionViewLayout: layout)

    contentView.addSubview(collectionProducts)

    let leadingColConstraint = NSLayoutConstraint(item: collectionProducts, attribute: NSLayoutAttribute.leadingMargin, relatedBy: NSLayoutRelation.equal, toItem: contentView, attribute: NSLayoutAttribute.leadingMargin, multiplier: 1, constant: 0)
    let trailingColConstraint = NSLayoutConstraint(item: collectionProducts, attribute: NSLayoutAttribute.trailingMargin, relatedBy: NSLayoutRelation.equal, toItem: contentView, attribute: NSLayoutAttribute.trailingMargin, multiplier: 1, constant: 0)
    let topColConstraint = NSLayoutConstraint(item: collectionProducts, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: lblHeader, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: 62)
    let bottomColConstraint = NSLayoutConstraint(item: collectionProducts, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: contentView, attribute: NSLayoutAttribute.bottom, multiplier: 1, constant: 55)

    contentView.addConstraints([leadingColConstraint,trailingColConstraint,topColConstraint,bottomColConstraint])
    collectionProducts.translatesAutoresizingMaskIntoConstraints = false

我错过了什么吗?我是 Swift 的一个相对较晚的推动者,而且以编程方式创建单元格也相对较新。我可以使用笔尖或故事板轻松地做同样的事情,但我被困在这里。请帮忙出门。

也许您可以避免所有这些约束,只需添加可视化格式语言约束,就像这样

contentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": collectionProducts]))
contentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[label][v0]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["label": labelHeader,"v0":collectionProducts]))

并保持 collectionProducts.translatesAutoresizingMaskIntoConstraintsfalse