如何以编程方式将约束从标签添加到UICollectionViewCell?

时间:2019-01-14 19:05:13

标签: ios swift uicollectionview constraints uicollectionviewcell

我对UICollectionViewCell的约束有疑问。

其中包括一张图像,以帮助形象化我的意思。

我有一个UICollectionViewController。在此控制器内,我添加了UICollectionViewCell,它仅占据屏幕的一部分。

我的问题是:如何将标签(见图片)中的约束添加到该UICollectionViewCell,以便使我知道标签与UICollectionViewCell的距离始终相同。在图像中,距离显示为箭头(这是我要添加的约束)。

enter image description here

希望有人可以帮助我。

谢谢。

2 个答案:

答案 0 :(得分:0)

假设标签是CollectionViewController的子视图,可以这样进行:

label.topAnchor.constraint(equalTo: cell.bottomAnchor, constant: someConstant).isActive = true

以上代码至少对我来说UITableViewController及其单元格有效,因此对UICollectionView也适用。

答案 1 :(得分:0)

首先,您应该知道必须设置哪些约束。 在这种情况下,如果您想使用无限标签,我想它是顶部,尾随和前导。否则,您也必须设置高度限制。

在collectionViewCell中为标签添加约束的代码示例:

    label = UILabel()
    self.addSubview(label)

    label.translatesAutoresizingMaskIntoConstraints = false

    // creating a top constraint related to cell content view top with constant 16
    let topConstraint = NSLayoutConstraint(item: label, attribute: .top, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self, attribute: .top, multiplier: 1, constant: 16)
    let leadingConstraint = NSLayoutConstraint(item: label, attribute: .leading, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self, attribute: .leading, multiplier: 1, constant: 16)
    let trailingConstraint = NSLayoutConstraint(item: label, attribute: .trailing, relatedBy: NSLayoutConstraint.Relation.equal, toItem: self, attribute: .trailing, multiplier: 1, constant: 16)

    // optional constraint
    //let heightConstaint = NSLayoutConstraint(item: label, attribute: .height, relatedBy: NSLayoutConstraint.Relation.equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 44)

    self.addConstraints([topConstraint, leadingConstraint, trailingConstraint])

如果我理解您的问题是对的,那么您希望在collectionView和label之间具有相似的关系。

因此,您应该编写与我上面编写的代码相同的代码,但是将标签约束与collectionView相关。

collectionView constraints

label constraints