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.
Ich denke, Sie müssen den Content-Offset in Ihrer scrollToValue
-Methode manuell festlegen:
Um diesen Offset zu finden, müssen Sie den aktuellen Zellenindex ( currentCell
) abfangen und die Breite der Zelle vorher finden. Zum Beispiel:
Tags und Links objective-c ios uicollectionview uicollectionviewlayout custom-component