Wie kann das Scrollen in einer sichtbaren Zelle in UICollectionView mit einem benutzerdefinierten Layout korrigiert werden?

8

Ich arbeite an einer benutzerdefinierten Wertauswahl, die von UIPickerView inspiriert wurde. Es sieht so aus:

Wie Sie sehen können, ist eines der Hauptmerkmale dieses Pickers die zentrale Zelle, die breiter sein sollte als andere, um die Nachbarn neben dem zentralen Rahmen sichtbar zu machen. Wenn Sie die Auswahl mit einer Schwenkgeste scrollen, sollte sie den Zentralwert dynamisch ändern und die Zellen entsprechend der obigen Logik anpassen. Und es funktioniert einfach perfekt:

Das Problem liegt in der Tippgeste. Wenn der Benutzer einen Gegenstand auf dem Pflücker auswählt, indem er darauf klickt, versucht der Pflücker, zu diesem Gegenstand zu blättern. Da der Offset jedoch durch das benutzerdefinierte Layout geändert wurde, scrollt UIScrollView zum falschen Punkt. Und es sieht so aus:

Wenn ich versuche, zur Offscreen-Zelle zu scrollen, funktionieren alle Dinge gut - diese Zelle wurde vom Layout nicht beeinflusst und ihre Koordinaten sind korrekt. Das Problem tritt nur für sichtbare Zellen auf. Ich habe keine Ideen, wie ich das beheben könnte. Sie können das ganze Projekt hier finden: Karussell-Sammlung View Test Project

Bitte finden Sie untenstehenden wichtigen Code.

%Vor%

Wenn es nicht genug ist, bitten Sie um zusätzlichen Code in Kommentaren.

    
Andrey Chevozerov 26.12.2014, 04:09
quelle

2 Antworten

4

In scrollToValue Methodenänderung:

%Vor%

in:

%Vor%

und es wird funktionieren.

    
gvuksic 04.01.2015, 12:54
quelle
2

Ich denke, Sie müssen den Content-Offset in Ihrer scrollToValue -Methode manuell festlegen:

%Vor%

Um diesen Offset zu finden, müssen Sie den aktuellen Zellenindex ( currentCell ) abfangen und die Breite der Zelle vorher finden. Zum Beispiel:

%Vor%     
Y.Bonafons 31.12.2014 14:43
quelle