Zauważyłem, że podczas wywoływania setLayout:animated
w UICollectionView
aby przełączyć się pomiędzy dwoma układami, aktualnie widoczne komórka nie przylegają do zIndex
to atrybuty układ został ustawiony w layoutAttributesForItemAtIndexPath:
.UICollectionView setLayout: animowane: nie zachowując zindex
Na przykład, jeśli były mieć UICollectionView
z UICollectionViewFlowLayout
ustawić to minimumLineSpacing
na ujemną więc komórki pokrywają się, a następnie ustawić zIndex
każdej komórce wyższego niż w poprzedniej komórki, to wydaje się, czy komórki są układane od dołu do góry.
To jednak zepsuje się, jeśli ustawię układ na inny układ, a następnie powrócę do oryginalnego układu. To tak, jakby aktualnie widoczna komórka nie słuchała zIndex i została umieszczona na pozostałych komórkach. Jeśli przewińę komórkę poza ekran, a następnie ponownie, to jest we właściwym miejscu.
Dzięki za odpowiedź, chociaż nie miałem szczęścia w rozwiązaniu. Myślę, że problem polega na tym, że UICollectionView robi coś z zIndexem wybranej komórki. Mogę się mylić, ale zmiana układu nie może wywołać "initialLayoutAttributesForAppearingItemAtIndex", jeśli komórka jest już widoczna i pozostaje widoczna podczas zmiany układu. – sampage
Właśnie podałem krótki przykład tego i byłem w stanie odtworzyć problemy z Z-Index. Rozumiem, że 'initialLayoutAttributesForAppearingItemAtIndex' został wywołany dla każdego elementu na ekranie po unieważnieniu (zmiana animowanych granic, blok aktualizacji partii), ale po ponownym przeczytaniu dokumentów dotyczy tych elementów, które wymagają animacji. Na szczęście udało mi się uzyskać niezmienne wyniki przy przełączaniu układów, ustawiając indeks z w "layoutAttributesForElementsInRect:' zamiast 'layoutAttributesForItemAtIndexPath:' –
@sampage czy możesz mi powiedzieć więcej o indeksie z wybranych komórek? Nie mogę znaleźć nigdzie dowodu na to, co mówisz, ale dostrzegam pewne niekonsekwencje w moich animacjach ... Dzięki! –