6

Mam podkategorię UICollectionViewFlowLayout, aw tej podklasie zmieniam ramki UICollectionViewLayoutAttributes, aby były większe lub mniejsze - w zależności od ich pozycji na ekranie.Animowana podklasa Animate UICollectionViewFlowLayout UICollectionViewLayoutAttributes zmiany ramek

mam wykonywania zmian klatek w layoutAttributesForElementsInRect: I jak dobrze wpuszczeniem go w layoutAttributesForItemAtIndexPath: Wracam YES w shouldInvalidateLayoutForBoundsChange:

Wszystko działa dobrze, ale komórki nie animować zmian rama.

Czy brakuje mi czegoś? Dlaczego te zmiany nie są animowane?

Dzięki.

+0

Witam. Czy mógłbyś dołączyć jakiś kod? Co rozumiesz przez zmianę ramek, aby były większe lub mniejsze w zależności od ich pozycji? Przewiń pozycję? (Na przykład szerszy w środku ekranu) Mam przykład, w którym to działa cudownie, więc zgaduję, że masz na myśli coś innego. Dzięki! – smallwisdom

+0

@smallwisdom, "zmieniające się ramki" oznaczają zmianę atrybutów każdego elementu, dzięki czemu elementy będą u góry większe i mniejsze w drodze do góry (z scrollView). – Raz

Odpowiedz

0

ROZWIĄZANA.

Nie ma "funkcji animacji" ani niczego podobnego, ponieważ zmiana ramek elementów widoku kolekcji w obrębie własnego układu niestandardowego (przepływu) nie może być animowana.

Rozwiązaniem problemu jest napisanie algorytmu, który oblicza wszystkie odpowiednie klatki, jakie ma metoda layoutAttributesForElementsInRect: zapewnia, że ​​ustawienie ramki elementu z szacunkiem ustawi ramę innego elementu i zrekompensuje dodany rozmiar lub zmniejszy rozmiar.