2016-11-22 10 views
10

पर काम करता है मैं एक UICollectionView कि दोनों सिम्युलेटर और असली डिवाइस पर iPhone 5s जैसे छोटे उपकरणों पर ठीक काम करता है/एसई/6/6s/7 बनाए हैं, लेकिन आईफोन 6 प्लस, आईफोन 7 प्लस और किसी भी आईपैड संस्करण के बारे में आने पर मुझे एक अजीब स्थिति है। यह असली डिवाइस पर ठीक काम करता है, लेकिन यह निम्न त्रुटि के साथ सिम्युलेटर में दुर्घटनाओं:UICollectionView - आईओएस 10 - iPhone 6 Plus सिम्युलेटर पर दुर्घटना लेकिन असली डिवाइस

Assertion failure in -[_UIFlowLayoutSection computeLayoutInRect:forSection:invalidating:invalidationContext:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3600.5.2/UIFlowLayoutSupport.m:823

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UICollectionViewFlowLayout internal error'

क्या मैं अब तक पता चला है कि अगर मैं estimatedItemSize को दूर यह ठीक काम करता है, लेकिन ऑटो लेआउट और नहीं करता है, लेकिन अगर मैंने इसे सक्षम किया है तो यह सिम्युलेटर में दुर्घटनाग्रस्त हो जाता है।

मैं नवीनतम Xcode संस्करण और iOS से 10

कोई भी विचार क्यों यह दुर्घटनाग्रस्त का उपयोग कर रहा हूँ?

+0

आप इसे देखो था http://stackoverflow.com/questions/39498503/collectionviewcontentsize-in-ios -10-उपयोग-आत्म-आकार-कोशिकाओं – PrafulD

+0

बहुत अजीब। क्या आपने DerivedData फ़ोल्डर को साफ़ करने का प्रयास किया है? – Nathaniel

+0

@PrafulD हाँ, लेकिन मैं उस मामले – lorandcsatlos

उत्तर

11

invalidateLayout लेआउट से पहले कॉलिंग इस समस्या के लिए एक समाधान नहीं है।

एक UIViewController उपवर्ग में:

override func viewWillLayoutSubviews() { 
    super.viewWillLayoutSubviews() 
    collectionView.collectionViewLayout.invalidateLayout() 
} 

या एक UIView उपवर्ग में:

override func layoutSubviews() { 
    super.layoutSubviews() 
    collectionView.collectionViewLayout.invalidateLayout() 
} 
+0

इस एप्पल से एक बग माना जाता है की जरूरत नहीं है, या हम कुछ गलत कर रहे हैं? जब तक मैं 'UIViewController' पर स्विच करने के बाद,' UICiewlectionViewController' का उपयोग करता था, तब तक यह पूरी बात मेरे लिए काम कर रही थी, मुझे यह त्रुटि मिली: -/ – d4Rk

+2

आईएमओ, यह UIKit की एक बग है। यदि आप आईओएस 10 का समर्थन करते हैं, तो आपको बग को काम करने की जरूरत है। –

+1

धन्यवाद, आपके उत्तर ने मेरा दिन बचाया। यह आईओएस 11 में कामकाज के बिना पूरी तरह से ठीक काम कर रहा है, लेकिन आईओएस 10 के लिए आपको अमान्य लयआउट() – fruechtemuesli

संबंधित मुद्दे