Mam podklasę UICollectionViewLayout
, która umieszcza komórki w kółko. Układ zwraca YES
dla wywołania shouldInvalidateLayoutForBoundsChange:
. Na obrotu, komórka w położeniu początkowym zanika i komórka w końcowej pozycji zanika w.Jaki jest najlepszy najlepszy sposób na wyłączenie przenikania krzyżowego na UICollectionView/UICollectionViewLayout zmienia się obrót lub ograniczenie?
Dodając następujący kod do mojego układu mogę wyłączyć zanika i pojawia się krąg zagadnień, które po prostu obracać ze zmianą orientacji:
- (UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
return nil;
}
- (UICollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
return [self layoutAttributesForItemAtIndexPath:itemIndexPath];
}
Dlaczego metody sprawdzony na bounds zmian, ponieważ dokumentacja nie zdają się sugerować robią? Dokumentacja zdaje się wskazywać, że są one nazywane powiązanymi w celu wstawiania i usuwania elementów z widoku kolekcji.
Czy istnieje lepszy sposób na wyłączenie przenikania podczas obracania?
Uwagi:
initialLayoutAttributesForAppearingItemAtIndexPath:
dokumentacja stwierdza, że domyślnie metoda zwracanil
ale wzywa dosuper
powrócił wartości niż zero.- ustawić symbolicznych punktów przerw na metodach UICollectionView
deleteItemsAtIndexPaths:
,moveItemAtIndexPath:toIndexPath:
iinsertItemsAtIndexPaths:
i żaden z nich uderzył podczas obracania.
To tylko ujęcie w ciemności, ale w celu wyłączenia animacji obrotu można całkowicie wyłączyć animację rdzenia dla operacji obracania: [Początek CATransaction]; [CATransaction setValue: (id) kCFBooleanFalse forKey: kCATransactionDisableActions]; // wykonaj obrót [Zatwierdzenie przesyłki z dostawą]; – maz
Może, wewnętrznie na granicach, przedmioty zostaną usunięte i dodane, w wyniku czego zostaną wywołane metody. Co do tego dlaczego -deleteItemsAtIndexPaths: i -insertItemsAtIndexPaths: nie daj się wywołać .. nie ma pojęcia tutaj. Być może programista UIKit oszukał i uniknął interfejsu API, aby wykonać wstawianie i usuwanie? Nie bezprecedensowy. – maz
Czy możesz wyłączyć niejawne animacje na warstwie nośnej widoku, używając czegoś podobnego do opisanego tutaj: http://stackoverflow.com/questions/2244147/disabling-implicit-animations-in-calayer-setneedsdisplayinrect/2244734#2244734? –