Jaki jest najlepszy najlepszy sposób na wyłączenie przenikania krzyżowego na UICollectionView / UICollectionViewLayout obraca lub ogranicza zmiany?
Mam podklasęUICollectionViewLayout
który umieszcza komórki w okręgu. Układ powracaYES
na połączenieshouldInvalidateLayoutForBoundsChange:
. Po obróceniu komórka w początkowej pozycji zanika, a komórka w końcowej pozycji zanika.
Dodając poniższy kod do mojego układu mogę wyłączyć zaniki, a krąg elementów wydaje się po prostu obracać ze zmianą orientacji:
- (UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
return nil;
}
- (UICollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
return [self layoutAttributesForItemAtIndexPath:itemIndexPath];
}
Dlaczego metody są wywoływane przy zmianie granic, ponieważ dokumentacja nie wydaje się sugerować, że tak się dzieje? Dokumentacja wydaje się określać, że są wywoływani w związku z wstawianiem i usuwaniem elementów z widoku kolekcji.
Czy jest lepszy sposób na wyłączenie efektu cross fade podczas rotacji?
Uwagi:
TheinitialLayoutAttributesForAppearingItemAtIndexPath:
dokumentacja stwierdza, że domyślnie metoda powracanil
ale dzwoni dosuper
zwrócił wartości inne niż zero.Ustawiam symboliczne punkty przerwania na metodach UICollectionViewdeleteItemsAtIndexPaths:
, moveItemAtIndexPath:toIndexPath:
iinsertItemsAtIndexPaths:
i żaden z nich nie zostaje trafiony podczas obrotu.