rightAnchor constraint did not apply when added pr

2019-03-01 08:28发布

问题:

When I Added rightAnchor constraint, constant= 20 did not apply. In leftAnchor is ok

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)])
}

Can someone help me?

回答1:

I have a really strong feeling that this is what you wanted to do there for rightAnchor.

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

If you want padding from the right or bottom you should use negative values. Rule of thumb is - whatever is left or upwards of something is negative.



回答2:

You are adding 20+rightAnchor of your superview. It should be -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)])