2015-09-18 66 views
4

我有一個從iOS9(我認爲)出現的NSLayoutConstraint安裝問題。無論如何,我得到以下控制檯錯誤:跟蹤NSLayoutConstraint崩潰?

This NSLayoutConstraint is being configured with a constant that exceeds internal limits. A smaller value will be substituted, but this problem should be fixed. Break on void _NSLayoutConstraintNumberExceedsLimit() to debug. This will be logged only once. This may break in the future.

其次:

* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* +[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]: A constraint cannot be made between a leading/trailing attribute and a right/left attribute. Use leading/trailing for both or neither.'

然後一堆堆信息:

*** First throw call stack: 
(
    0 CoreFoundation      0x0000000102b3af65 __exceptionPreprocess + 165 
    1 libobjc.A.dylib      0x00000001025aedeb objc_exception_throw + 48 
    2 CoreFoundation      0x0000000102b3ae9d +[NSException raise:format:] + 205 
    3 Foundation       0x0000000102177e82 +[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:] + 299 
    4 My App       0x000000010011f429 -[APStatisticsAverageFlightDuration viewDidInit] + 2841 
    5 My App       0x000000010011e909 -[APStatisticsAverageFlightDuration awakeFromNib] + 73 
    6 UIKit        0x000000010328752e -[UINib instantiateWithOwner:options:] + 2416 
    7 UIKit        0x000000010307284d -[UIViewController _loadViewFromNibNamed:bundle:] + 381 
    8 UIKit        0x0000000103073179 -[UIViewController loadView] + 178 
    9 UIKit        0x00000001032aad85 -[UITableViewController loadView] + 84 
    10 UIKit        0x000000010307347c -[UIViewController loadViewIfRequired] + 139 
    11 UIKit        0x0000000103073c7d -[UIViewController view] + 27 
    12 UIKit        0x00000001037ded8e __67-[UIStoryboardEmbedSegueTemplate newDefaultPerformHandlerForSegue:]_block_invoke + 524 
    13 UIKit        0x00000001035cf189 -[UIStoryboardSegueTemplate _performWithDestinationViewController:sender:] + 460 
    14 UIKit        0x00000001035cef8c -[UIStoryboardSegueTemplate _perform:] + 82 
    15 UIKit        0x00000001035cf250 -[UIStoryboardSegueTemplate perform:] + 156 
    16 UIKit        0x0000000103073687 -[UIViewController loadViewIfRequired] + 662 
    17 UIKit        0x00000001030b6c26 -[UINavigationController _layoutViewController:] + 54 
    18 UIKit        0x00000001030b74dd -[UINavigationController _updateScrollViewFromViewController:toViewController:] + 433 
    19 UIKit        0x00000001030b7633 -[UINavigationController _startTransition:fromViewController:toViewController:] + 116 
    20 UIKit        0x00000001030b8879 -[UINavigationController _startDeferredTransitionIfNeeded:] + 890 
    21 UIKit        0x00000001030b967d -[UINavigationController __viewWillLayoutSubviews] + 57 
    22 UIKit        0x000000010325163d -[UILayoutContainerView layoutSubviews] + 248 
    23 UIKit        0x0000000102f9911c -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 710 
    24 QuartzCore       0x000000010146f36a -[CALayer layoutSublayers] + 146 
    25 QuartzCore       0x0000000101463bd0 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366 
    26 QuartzCore       0x0000000101463a4e _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24 
    27 QuartzCore       0x00000001014581d5 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277 
    28 QuartzCore       0x00000001014859f0 _ZN2CA11Transaction6commitEv + 508 
    29 UIKit        0x0000000102f1253a _afterCACommitHandler + 174 
    30 CoreFoundation      0x0000000102a669d7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 
    31 CoreFoundation      0x0000000102a66947 __CFRunLoopDoObservers + 391 
    32 CoreFoundation      0x0000000102a5c59b __CFRunLoopRun + 1147 
    33 CoreFoundation      0x0000000102a5be98 CFRunLoopRunSpecific + 488 
    34 GraphicsServices     0x0000000106016ad2 GSEventRunModal + 161 
    35 UIKit        0x0000000102ee8676 UIApplicationMain + 171 
    36 My App       0x000000010026c2cf main + 111 
    37 libdyld.dylib      0x000000010491f92d start + 1 
    38 ???         0x0000000000000001 0x0 + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

我怎麼跟蹤哪些約束導致問題?我有幾十個。我已經添加了_NSLayoutConstraintNumberExceedsLimit()斷點停靠我在這條線:

NSArray *constraintAircraftV = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[xLabelsCV(==lblCvHeight)]-spacing-[timePeriodCV(==timePeriodCvHeight)]-spacing-[aircraftCV(==aircraftCvHeight)]" options:0 metrics:metrics views:views]; 

我怎麼凝膠,其中的問題是,雖然在這裏?代碼沒有改變,但它從iOS9更新剛剛停止工作。

回答

2

嘿,我不認爲_NSLayoutConstraintNumberExceedsLimit()導致崩潰。這只是一個警告。但是,它仍然應該是理想的。

專注於現在的崩潰。 問題在於:

[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]: A constraint cannot be made between a leading/trailing attribute and a right/left attribute. Use leading/trailing for both or neither.'

在約束

也許某處你爲到NSLayoutAttributeLeft項目相關NSLayoutAttributeLeading。 你可以把代碼添加到約束條件嗎?

+0

這是問題所在。我遇到的麻煩是在我的代碼中找到了我做了這件事的地方。這很難追查。謝謝。 –

3

這是一個新的iOS 9問題。 取代:

[self addConstraint:[NSLayoutConstraint constraintWithItem:self.skipButton attribute:NSLayoutAttributeTrailling relatedBy:NSLayoutRelationEqual toItem:self **attribute:NSLayoutAttributeRight** multiplier:XXX constant:XXX]]; 

,使這兩個屬性是相同的:

[self addConstraint:[NSLayoutConstraint constraintWithItem:self.skipButton attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeRight multiplier:XXX constant:XXX]]; 

屬性的兩種情況:NSLayoutAttributeXXXX必須是相同的。

相關問題