以编程方式添加时,rightAnchor 约束不适用 - swift

rightAnchor constraint did not apply when added programmatically - swift

当我添加 rightAnchor 约束时,constant= 20 不适用。在 leftAnchor 没问题

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

    addSubview(collectionView)
    collectionView.translatesAutoresizingMaskIntoConstraints = false
    NSLayoutConstraint.activate([collectionView.leftAnchor.constraint(equalTo: leftAnchor, constant: 20),
                                 collectionView.topAnchor.constraint(equalTo: self.topAnchor),
                                 collectionView.rightAnchor.constraint(equalTo: rightAnchor, constant: 20),
                                 collectionView.heightAnchor.constraint(equalTo: self.heightAnchor)])
}

有人可以帮助我吗?

我有一种强烈的感觉,这就是你想为 rightAnchor 做的事情。

collectionView.rightAnchor.constraint(equalTo: rightAnchor, constant: -20)

如果你想从右边或底部填充,你应该使用负值。


经验法则:东西的左边或上面是负数。

您正在为您的超级视图添加 20+rightAnchor。应该是-20

addSubview(collectionView)
collectionView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([collectionView.leftAnchor.constraint(equalTo: leftAnchor, constant: 20),
                             collectionView.topAnchor.constraint(equalTo: self.topAnchor),
                             collectionView.rightAnchor.constraint(equalTo: rightAnchor, constant: -20),
                             collectionView.heightAnchor.constraint(equalTo: self.heightAnchor)])