1

我有一個UICollectionView添加到UIView。我只想讓集合視圖調整方向更改的大小,以便它適合超級視圖(UIView)。在添加布局約束後,集合視圖丟失。我甚至不能得到的第一個約束正常工作。(下圖)Autolayout UICollectionView iOS 8

NSLayoutConstraint *leftSideConstraint = [NSLayoutConstraint constraintWithItem:self.collectionView 
                       attribute:NSLayoutAttributeLeading 
                       relatedBy:NSLayoutRelationEqual 
                        toItem:self.view 
                       attribute:NSLayoutAttributeLeading 
                       multiplier:1.0 
                        constant:10.0]; 

然後我約束添加到self.view。

我在做什麼錯?請幫忙!

更新: 這是如何工作的。我是新來的自動佈局。我只是想通過一個滿足制約因素之一,以確保他們所有的工作:)謝謝

NSLayoutConstraint *constraint1 = [NSLayoutConstraint constraintWithItem:self.collectionView 
                   attribute:NSLayoutAttributeLeading 
                   relatedBy:NSLayoutRelationEqual 
                    toItem:self.view 
                   attribute:NSLayoutAttributeLeading 
                   multiplier:1.0 
                   constant:5.0]; 

NSLayoutConstraint *constraint2 = [NSLayoutConstraint constraintWithItem:self.collectionView 
                   attribute:NSLayoutAttributeTrailing 
                   relatedBy:NSLayoutRelationEqual 
                    toItem:self.view 
                   attribute:NSLayoutAttributeTrailing 
                   multiplier:1.0 
                   constant:-5.0]; 

NSLayoutConstraint *constraint3 = [NSLayoutConstraint constraintWithItem:self.collectionView 
                   attribute:NSLayoutAttributeBottom 
                   relatedBy:NSLayoutRelationEqual 
                    toItem:self.view 
                   attribute:NSLayoutAttributeBottom 
                   multiplier:1.0 
                   constant:-5.0]; 

NSLayoutConstraint *constraint4 = [NSLayoutConstraint constraintWithItem:self.collectionView 
                   attribute:NSLayoutAttributeTop 
                   relatedBy:NSLayoutRelationEqual 
                    toItem:self.view 
                   attribute:NSLayoutAttributeTop 
                   multiplier:1.0 
                   constant:5.0]; 


[self.view addConstraints:@[constraint1, constraint2, constraint3, constraint4]]; 

回答

2

你不能只是增加一個約束的觀點正確定位。它需要知道它的x和y位置,寬度和高度。有了這個約束,你只能給它x位置。你需要三個約束,例如。尾隨,頂部和底部或頂部,寬度,高度。基本上任何一組約束將完整描述視圖的位置,寬度和高度。