Ich habe eine Sammelansicht, und ich gehe für den Effekt, wo, wenn eine Zelle angeklickt wird, wächst es, um den gesamten Bildschirm zu übernehmen. Um dies zu erreichen, rufe ich im Wesentlichen nur performBatchUpdates
innerhalb didSelectItemAtIndexPath
, und die sizeForItemAtIndexPath
weiß, eine größere Größe für eine ausgewählte Zelle zurückzugeben. Das alles funktioniert ganz gut, die Zelle wächst und schrumpft wie gewünscht.Wie animiere ich die Innenansichten einer Sammlungsansichtszelle, während ich ihre Größe ändere?
Das Problem liegt innerhalb der Zelle. Die Sammlungsansichtszelle besteht aus einer moderat komplexen Ansichtshierarchie, die durch Einschränkungen verwaltet wird. Ich möchte, dass die Unteransichten der Zelle mit der animierenden Zelle wachsen und schrumpfen. Leider fangen meine Unteransichten sofort an ihrer neuen Position an, während die Zelle langsam zu ihrer neuen Größe animiert. Wie kann ich sicherstellen, dass der Inhalt der Zelle mit der Zellengröße animiert wird?
Hier sind die beiden relevanten Methoden aus der Sammlung View-Controller:
- (CGSize) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
if ([collectionView.indexPathsForSelectedItems containsObject:indexPath])
return CGSizeMake(collectionView.bounds.size.width - 20, collectionView.bounds.size.height - (20 + [self.topLayoutGuide length]));
else
return CGSizeMake(260, 100);
}
- (void) collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
[collectionView performBatchUpdates:nil completion:nil];
}
Ihre Subviews rasten am ehesten ein, da ein Flag, das die Zelle angibt, die expandiert wird, von false auf true wechselt. Anschließend wird 'layoutSubviews' aufgerufen, wodurch die Unteransichten sofort in ihre erweiterten Positionen verschoben werden. Ich rate nur - wenn Sie Code hinzufügen, können wir sehen, ob das der Fall ist. Eine andere Anmerkung - sollte sich die Zelle über die anderen Zellen in der Sammlung ausdehnen oder sollte sie sie aus dem Weg schieben? Wenn es über die Spitze hinaus erweitert werden soll, empfehle ich, eine neue Ansicht oberhalb der UICollectionView hinzuzufügen und diese zu animieren. – Ian
Ich habe die zwei relevanten Methoden hinzugefügt, die die Größenänderung bei der Auswahl vornehmen. Es gibt sehr wenig anderen Code im View-Controller. Die Zelle selbst ist ein paar Nib-Dateien, nichts, was ich leicht zum Post hinzufügen kann. – Mike