UICollectionView öğesinin, döndürme sırasındaki kaydırma sırasında düşmesine neden olan herhangi bir fikir nasıl giderilir?UICollectionView, döndürme sırasında döndürme yaparken kilitleniyor (dizin yolundaki ek öğe için düzen özellikleri geçersiz kılmadan değiştirildi ..)
Kaydırma ve döndürme için ayrı ayrı aşağıdaki yaklaşımı kullanıyorum ve her biri iyi çalışıyor gibi görünüyor. Her iki şeyi aynı anda yaparken, bu çökmeyi alabileceğimi fark ettim. Bu nedenle, cihazı döndürdüğümde ve layout düzeninde yeni düzen özelliklerinin hesaplanmasında, sürekli kaydırma işleminin "invalidateLayoutWithContext (invalidContext)" (aşağıya bakınız) tetiklenmesiyle ilgili bir şey gibi görünüyor.
Fikirler? Döndürme sırasında herhangi bir kaydırma yanıtı beklemeye (ya da yok saymaya) imkan veren bir yol var mı? Ben bütün düzenini
self.cal.collectionViewLayout.invalidateLayout()
Kaydırma Yaklaşım geçersiz görünümü kumandam viewWillLayoutSubviews ise
Rotasyon Yaklaşım bana "bağlantılı" dekoratif görünümü (başlık) bulundurmalarını sağlamak amacıyla Bilmiyorum Performansı öldürdüğü için tüm düzeni geçersiz kılar, ancak aşağıdakileri yapın. gürültüyle hata benim tamamlayıcı görünüm düzenleri farklı olma konusunda ise düzen sınıfta ben Dekoratif Görünüm (başlık) geçersiz ediyorum burada shouldInvalidateLayoutForBoundsChange
override func shouldInvalidateLayoutForBoundsChange(newBounds: CGRect) -> Bool {
let invalidContext : UICollectionViewLayoutInvalidationContext = self.invalidationContextForBoundsChange(newBounds)
// Keep Header Sticky
invalidContext.invalidateDecorationElementsOfKind(GCCalendarLayoutKind_Decorative1, atIndexPaths: [headerDecorativeIndexPath])
// Apply Invalidation
self.invalidateLayoutWithContext(invalidContext)
// Return normal super return (just in case of future IOS upgrades)
return super.shouldInvalidateLayoutForBoundsChange(newBounds)
}
Not geçersiz kılar.
hata
2015-10-30 07: 14: 30,181 test3_collectionview [17086: 3.102.132] içinde * onaylama hatası - [UICollectionViewData validateLayoutInRect:], /BuildRoot/Library/Önbellek/com.apple.xbs/Kaynaklar/UIKit_Sim/UIKit-3512.29.5/UICollectionViewData.m: 408 2015/10/30 07: 14: 30,185 test3_collectionview [17086: 3.102.132] * uygulamasını Sonlandırma nedeniyle yakalanmamış istisna 'NSInternalInconsistencyException ', sebep:'için düzen özellikleridizin yolundaki ek öğe ({length = 2, yol = 0 - 0}) dizin yolundan değiştirildi: ({length = 2, path = 0 - 0}); eleman tür: (Dekoratif1); çerçeve = (0 1085.5; 320 16); zIndex = 1; dizinine yol: ({uzunluk = 2, yol = 0 - 0}); eleman tür: (Dekoratif1); çerçeve = (0 853.5; 320 16); zIndex = 1; düzeni' geçersiz olmadan *** İlk atış çağrı yığını:
'shouldInvalidateLayoutForBoundsChange' yöntemini geçersiz kılmazsanız, kilitlenme gerçekleşir mi? – Lefteris
@Bu durumda kazara oluşmaz, bu durumda, koleksiyonumun performansını etkilemeden sonra neyi elde ettiğime emin değilim (yani, invalidateLayoutWithContext yaklaşımını nasıl kullanacağından emin değilsiniz) – Greg