UIImageView animiert funktioniert in UICollectionViewCell nicht ordnungsgemäß

9

Ich möchte ein UIImageView animiert in UICollectionViewCell hinzufügen, also habe ich diesen Code gefunden:

%Vor%

Dies ist mein MainViewController mit einem CollectionView programmatisch hinzugefügt.

%Vor%

Und das ist meine benutzerdefinierte UICollectionViewCell mit einem UIImageView

Mein Problem ist, wenn Sie auf eine Zelle tippen, verschwindet die UIImageView . Als ich versuchte, das Problem zu lösen, suchte ich nach weiteren UICoolectionView delegierten Methoden. Dann habe ich versucht, shouldHighlightItemAtIndexPath zu verwenden, aber wenn ich diese Methode verwende, die false zurückgibt, funktioniert die Animation gut, aber die Auflistungsansicht reagiert nicht mehr auf didSelectItemAtIndexPath .

Dies ist ein github-Repository mit einem Code, der das Problem anzeigt: Ссылка ( mit Lösung aktualisiert ) )

LÖSUNG:

Mit Hilfe von matt habe ich in meinem Code folgende Änderungen vorgenommen:

1) Fügen Sie das Bilder-Array zu highlightedAnimationImages property

hinzu %Vor%

2) Starten Sie die Animation neu, wenn die Zellen deaktiviert sind

%Vor%

3) Starten Sie die Animation neu, wenn Zellen ausgewählt sind

%Vor%

LÖSUNG 2:

Nach einigen Tests habe ich herausgefunden, dass, wenn Sie tippen und halten eine Zelle UIImageView wieder verschwindet. Also müssen wir die Animation in zwei anderen Methoden neu starten:

1) didHighlightItemAtIndexPath

%Vor%

2) didUnhighlightItemAtIndexPath

%Vor%     
Sebastian 02.09.2015, 14:47
quelle

2 Antworten

2

Wenn Sie die Zelle auswählen, wird die Bildansicht in highlightedAnimationImages und nicht in animationImages angezeigt. Sie haben highlightedAnimationImages nicht festgelegt, sodass Sie nichts sehen.

Hier ist ein Screencast, der zeigt, dass das funktionieren kann. Die Zelle wird ausgewählt, wenn der Hintergrund grau ist (das ist selectedBackgroundView ), aber die Animation wird fortgesetzt:

    
matt 02.09.2015, 14:51
quelle
1

Falls jemand anderes auf diesen ekligen Bug stößt und die obigen Lösungen nicht helfen, versuchen Sie imageView.stopAnimating() in der prepareForReuse() -Funktion Ihrer Zelle aufzurufen.

    
Vladimir Mitrovic 13.11.2017 22:30
quelle