我对UICollectionViewCell的约束有疑问。
其中包括一张图像,以帮助形象化我的意思。
我有一个UICollectionViewController。在此控制器内,我添加了UICollectionViewCell,它仅占据屏幕的一部分。
我的问题是:如何将标签(见图片)中的约束添加到该UICollectionViewCell,以便使我知道标签与UICollectionViewCell的距离始终相同。在图像中,距离显示为箭头(这是我要添加的约束)。
希望有人可以帮助我。
谢谢。
答案 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相关。