Erstellen langsame scrollen zu indexPath in UICollectionView
Arbeite ich an einem Projekt, wo ich mit einem UICollectionView auf, ein "Bild-ticker", wo ich Werbung für eine Reihe von logos. Der collectionView ist ein Element hohe und zwölf Elemente lang, und zeigt zwei zu drei items gleichzeitig (je nach Größe des logos sichtbar).
Ich würde gerne einen langsamen automatischen Bildlauf-animation aus dem ersten Element zum letzten, und dann wiederholen.
Hat jemand in der Lage gewesen, diese Arbeit zu machen? Ich kann das scrollen funktioniert mit
[myCollection scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:(myImages.count -1) inSection:0] atScrollPosition:UICollectionViewScrollPositionRight animated:YES];
Aber das ist viel zu schnell!!
[UIView animateWithDuration:10 delay:2 options:(UIViewAnimationOptionAutoreverse + UIViewAnimationOptionRepeat) animations:^{
[myCollection scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:(myImages.count -1) inSection:0] atScrollPosition:UICollectionViewScrollPositionRight animated:NO];
} completion:nil];
Dieser liefert dann die gewünschte Scroll-Geschwindigkeit, sondern nur die letzten paar Zellen sichtbar sind in der Serie. Ich vermute, Sie (und auch die Start-sichtbare Zellen) werden aus der Warteschlange entfernt werden sofort.
Irgendwelche Gedanken?
InformationsquelleAutor der Frage Chris | 2012-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, diesen Ansatz:
InformationsquelleAutor der Antwort Masa
Verwende ich eine "1-pixel-offset" trick. Beim scrollen programmgesteuert, setzen Sie einfach das Ende
contentOffset.x
auf 1 pixel mehr/weniger, als es sollte. Sollte dies nicht wahrnehmbar. Und in die Vollendung-block legen Sie es auf den tatsächlichen Wert. So können Sie vermeiden, den die vorzeitige Zelle entfernen-problem und bekommen smooth-scrolling-animation 😉Hier ist ein Beispiel-scrollen auf der rechten Seite (z.B. von Seite 1 auf 2). Beachten Sie, dass in der
animations:
block ich eigentlich Schriftrollen ein pixel weniger (pageWidth * nextPage - 1
). Ich dann wieder den richtigen Wert imcompletion:
block.InformationsquelleAutor der Antwort Hlung
Hätte man auch ein "langsames" scrollen Sie an das Ende Sie
UICollectionView
ohne ein "springen" von indexpath zu indexpath. Ich habe dies schnell für eine Sammlung den Blick auf eineTVOS
app:Ich rufen Sie einfach die
autoScroll()
imviewDidLoad()
und der rest kümmert Sie sich. Die Geschwindigkeit des Blätterns wird entschieden, die animation Zeit derUIView
. Man könnte (ich habe nicht versucht) fügen Sie einen NSTimer mit0
Sekunden statt, so dass Sie für ungültig erklären kann, die es auf userscroll.InformationsquelleAutor der Antwort Paul Peelen
Für jemand anderes finden, ich habe aktualisiert Masa ' s Vorschlag, die Arbeit an Swift und ich eingeführt haben, ein wenig zu erleichtern, zum Ende hin so wirkt es mehr wie das original scrollItemsToIndexPath animiert nennen. Ich habe Hunderte von Artikeln aus meiner Sicht ein gleichmäßiges Tempo war nicht eine option für mich.
Optimieren der Werte von dif-und modifier passt die Dauer/Pegel der wohl für die meisten Situationen.
InformationsquelleAutor der Antwort Allan Weir
In .h-Datei,
deklarieren Sie diese timer,
Ort dieser timer-code,
dann,
Hoffe, es wird nützlich sein.
InformationsquelleAutor der Antwort Ramdhas