2015-09-21 25 views
10

इस कोड:आईओएस 9 बाधा त्रुटि

[self.collectionView setTranslatesAutoresizingMaskIntoConstraints: NO]; 

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.collectionView 
                 attribute:NSLayoutAttributeTop 
                 relatedBy:NSLayoutRelationEqual 
                 toItem:self.topLayoutGuide 
                 attribute:NSLayoutAttributeTop 
                multiplier:1.0f 
                 constant:1.0f]]; 

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.collectionView 
                 attribute:NSLayoutAttributeBottom 
                 relatedBy:NSLayoutRelationEqual 
                 toItem:self.bottomLayoutGuide 
                 attribute:NSLayoutAttributeBottom 
                multiplier:1.0f 
                 constant:0.f]]; 

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.collectionView 
                 attribute:NSLayoutAttributeLeading 
                 relatedBy:NSLayoutRelationEqual 
                 toItem:self.view 
                 attribute:NSLayoutAttributeLeading 
                multiplier:1.0f 
                 constant:0.0f]]; 

[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.collectionView 
                 attribute:NSLayoutAttributeTrailing 
                 relatedBy:NSLayoutRelationEqual 
                 toItem:self.view 
                 attribute:NSLayoutAttributeRight 
                multiplier:1.0f 
                 constant:0.0f]]; 

कार्य iOS 8 और iOS7 पर की ठीक है, लेकिन अब iOS9 साथ जब मैं अपने अनुप्रयोग चलाने जब मैं इस त्रुटि मिलती है:

समाप्त एप्लिकेशन ध्यान में न आया की वजह से अपवाद 'NSInvalidArgumentException', कारण: '*** + [NSLayoutConstraint बाधा WithItem: विशेषता: संबंधित: toItem: विशेषता: गुणक: निरंतर:]: एक बाध्यकारी विशेषता/दाएं/बाएं विशेषता के बीच एक बाधा नहीं बनाई जा सकती है। दोनों या न तो के लिए अग्रणी/पिछला उपयोग करें। '

जब मैं उन बाधाओं को हटाता हूं तो मेरा ऐप ठीक काम करता है। तो मुझे यह जानने की जरूरत है कि समस्या क्या है और आईओएस 8 से आईओएस 9 में क्या बदला गया है।

उत्तर

13

आपका लॉग स्पष्ट रूप से संकेत मिलता है कि ... या तो आप leading/trailing या right/left दोनों नहीं ...

तो बस की तरह

नीचे
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.collectionView 
                attribute:NSLayoutAttributeTrailing 
                relatedBy:NSLayoutRelationEqual 
                toItem:self.view 
                attribute:NSLayoutAttributeTrailing 
               multiplier:1.0f 
                constant:0.0f]]; 
+3

धन्यवाद इस मुद्दे को हल किया गया है, लेकिन क्या आप मुझे समझा सकते हैं कि आईओएस 8 में क्यों आईओएस 9 में ठीक काम नहीं किया गया है क्या बदला गया है? – Chlebta

+4

@Chlebta बेहतर पैरामीटर जांच। – Sulthan

2

मैं इन पंक्तियों था 4 बाधा को बदलने का उपयोग कर सकते हैं:

NSLayoutConstraint *leftConstraint = [NSLayoutConstraint constraintWithItem:self.contentView 
                    attribute:NSLayoutAttributeLeading 
                    relatedBy:0 
                    toItem:self.view 
                    attribute:NSLayoutAttributeLeft 
                   multiplier:1.0 
                    constant:0]; 
[self.view addConstraint:leftConstraint]; 

NSLayoutConstraint *rightConstraint = [NSLayoutConstraint constraintWithItem:self.contentView 
                    attribute:NSLayoutAttributeTrailing 
                    relatedBy:0 
                     toItem:self.view 
                    attribute:NSLayoutAttributeRight 
                    multiplier:1.0 
                    constant:0]; 
[self.view addConstraint:rightConstraint]; 

मैं इसे बदल गया:

NSLayoutConstraint *leftConstraint = [NSLayoutConstraint constraintWithItem:self.contentView 
                    attribute:NSLayoutAttributeLeading 
                    relatedBy:0 
                    toItem:self.view 
                    attribute:NSLayoutAttributeLeading 
                   multiplier:1.0 
                    constant:0]; 
[self.view addConstraint:leftConstraint]; 

NSLayoutConstraint *rightConstraint = [NSLayoutConstraint constraintWithItem:self.contentView 
                    attribute:NSLayoutAttributeTrailing 
                    relatedBy:0 
                     toItem:self.view 
                    attribute:NSLayoutAttributeTrailing 
                    multiplier:1.0 
                    constant:0]; 
[self.view addConstraint:rightConstraint]; 

यह त्रुटि का समाधान है।