Zrobiłem podklasę collectionViewFlowLayout
. Po tym, realizowany następujący kod:przy użyciu kolekcji podklasowejViewViewLayout Otrzymuję dziwny błąd
override func finalLayoutAttributesForDisappearingItemAtIndexPath(itemIndexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? {
let attr = self.layoutAttributesForItemAtIndexPath(itemIndexPath)
attr?.transform = CGAffineTransformRotate(CGAffineTransformMakeScale(0.8, 0.8), CGFloat(M_PI))
attr?.center = CGPointMake(CGRectGetMidX(self.collectionView!.bounds), CGRectGetMidY(self.collectionView!.bounds))
return attr
}
Kiedy usuwać elementy w widoku kolekcji za pomocą performBatchUpdates
: metodę debugger generuje ten komunikat o błędzie. Usunięcie faktycznie powiedzie się i działa w pełni, ale jestem nieco zdezorientowany tym wyjściem debuggera. Czy ktoś może mi wyjaśnić, czy powinienem zrobić to, aby debugger? Naprawdę nie rozumiem, jaki kod i gdzie należy dodać.
// BŁĘDZIE
2015-08-02 12:39:42.208 nameOfMyProject[1888:51831] Logging only once for UICollectionViewFlowLayout cache mismatched frame 2015-08-02 12:39:42.209 nameOfMyProject[1888:51831] UICollectionViewFlowLayout has cached frame mismatch for index path {length = 2, path = 0 - 11} - cached value: {{106.13333333333333, 131.13333333333333}, {75.733333333333348, 75.733333333333348}}; expected value: {{192.5, 288}, {94.666666666666671, 94.666666666666671}}
2015-08-02 12:39:42.209 nameOfMyProject[1888:51831] This is likely occurring because the flow layout subclass nameOfMyProject.ShopLayout is modifying attributes returned by UICollectionViewFlowLayout without copying them
2015-08-02 12:39:42.209 nameOfMyProject[1888:51831] Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or snapshot after screen updates.
Czy to tylko zacząć się dzieje z Xcode 7? Od czasu aktualizacji do Xcode 7 (i instalacji iOS9) działo się coś bardzo podobnego. Jestem Obj-C, nie jest szybki, ale błąd mówi, że nie kopiujesz atrybutów przed ich zmianą. Próbowałem zrobić coś takiego jak 'NSArray * allAttributesInArray = [[super layoutAttributesForElementsInRect: rect] copy];' przed manipulowaniem nimi, ale to też nie działa. – wanderingme
Nigdy nie użyłem widoku kolekcji przed xcode 7. Skończyło się na używaniu zwykłego starego flowLayout bez podklasowania, więc naprawdę nie mogę dać odpowiedzi – brumbrum
@wanderingMożesz się dowiedzieć, jak rozwiązać ten problem? Mam to samo i nic nie pomogło go jeszcze rozwiązać. – Solomiya