Was ist die beste Methode, um Überblendungen in UICollectionView / UICollectionViewLayout zu deaktivieren, wenn Änderungen gedreht oder begrenzt werden?

Ich habe eine Unterklasse vonUICollectionViewLayout das platziert Zellen in einem Kreis. Das Layout kehrt zurückYES für den AnrufshouldInvalidateLayoutForBoundsChange:. Bei Drehung wird die Zelle in der Anfangsposition ausgeblendet und die Zelle in der Endposition eingeblendet.

Durch Hinzufügen des folgenden Codes zu meinem Layout kann ich die Überblendungen deaktivieren und der Kreis der Elemente scheint sich einfach mit der Änderung der Ausrichtung zu drehen:

- (UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
    return nil;
}

- (UICollectionViewLayoutAttributes *)finalLayoutAttributesForDisappearingItemAtIndexPath:(NSIndexPath *)itemIndexPath {
    return [self layoutAttributesForItemAtIndexPath:itemIndexPath];
}

Warum werden die Methoden bei einer Änderung der Grenzen aufgerufen, weil die Dokumentation dies nicht nahe legt? In der Dokumentation scheint angegeben zu sein, dass sie im Zusammenhang mit dem Einfügen und Entfernen von Elementen aus der Sammlungsansicht aufgerufen werden.

Gibt es eine bessere Möglichkeit, die Überblendung während der Drehung zu deaktivieren?

Anmerkungen:

DasinitialLayoutAttributesForAppearingItemAtIndexPath: Dokumentation besagt, dass die Methode standardmäßig zurückgibtnil ruft aber ansuper hat Nicht-Null-Werte zurückgegeben.Ich setze symbolische Haltepunkte für die UICollectionView-MethodendeleteItemsAtIndexPaths:, moveItemAtIndexPath:toIndexPath: undinsertItemsAtIndexPaths: und keiner von ihnen wird während der Rotation getroffen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage