6

Ich habe Unterklasse UICollectionViewFlowLayout, und in dieser Unterklasse, ich ändern die UICollectionViewLayoutAttributes Frames, so dass sie größer oder kleiner erscheinen würde - je nach ihrer Position auf dem Bildschirm.Animate UICollectionViewFlowLayout Unterklasse UICollectionViewLayoutAttributes Rahmenänderungen

ich die Rahmen Änderungen in layoutAttributesForElementsInRect ausführen: Und auch in layoutAttributesForItemAtIndexPath Rückkehr: Ich bin JA Rückkehr in shouldInvalidateLayoutForBoundsChange:

Alles gut funktioniert, aber die Zellen sie animieren nicht die Veränderungen der der Rahmen.

Bin ich etwas fehlt? Warum werden die Änderungen nicht animiert?

Danke.

+0

Hallo. Könnten Sie bitte etwas Code hinzufügen? Was meinst du damit, die Rahmen so zu ändern, dass sie je nach Position größer oder kleiner sind? Scrollposition? (Zum Beispiel, breiter in der Mitte des Bildschirms) Ich habe ein Beispiel, wo das wunderbar funktioniert, so vermute ich, dass Sie etwas anderes meinen. Vielen Dank! – smallwisdom

+0

@smallwisdom, "Frames ändern" bedeutet, dass die Attribute der einzelnen Elemente geändert werden, sodass Elemente auf dem Weg nach oben (scrollView) größer und kleiner erscheinen. – Raz

Antwort

0

Gelöst.

Es gibt keine "Animationsfunktion" oder etwas Ähnliches, da das Ändern der Rahmen von Elementen einer Sammlungsansicht in Ihrem eigenen benutzerdefinierten (Fluss-) Layout einfach nicht animiert werden kann. Die Lösung für das Problem besteht darin, einen Algorithmus zu schreiben, der alle relevanten Frames berechnet, die die Methode layoutAttributesForElementsInRect liefert: Wenn der Rahmen eines Elements gesetzt wird, wird der Frame eines anderen Elements entsprechend angepasst oder verkleinert Größe.