Ich habe eine collectionView
, die zurück in die erste Zelle zurückkehrt, wenn ich auf der zweiten Seite auf eine neue Zelle tippen.UICollectionView Scroll-Problem mit Paging nach dem Tippen aktiviert
Obwohl es die zweite Seite sein sollte, bekomme ich Seite 0.0 in der zweiten und 0.0 in der ersten Seite.
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let pageWidth = collectionCustom.frame.size.width
let page = floor((collectionCustom.contentOffset.x - pageWidth/2)/pageWidth) + 1
print("Page number: \(page)")
}
Ich habe nichts in der didSelectItem
Methode geschieht, also warum soll ich das Scroll bekommen?
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: (inout CGPoint)) {
let pageWidth: Float = Float(collectionCustom.frame.width)
// width + space
let currentOffset: Float = Float(collectionCustom.contentOffset.x)
let targetOffset: Float = Float(targetContentOffset.x)
var newTargetOffset: Float = 0
if targetOffset > currentOffset {
newTargetOffset = ceilf(currentOffset/pageWidth) * pageWidth
}
else {
newTargetOffset = floorf(currentOffset/pageWidth) * pageWidth
}
if newTargetOffset < 0 {
newTargetOffset = 0
}
else if newTargetOffset > Float(collectionCustom.contentSize.width) {
newTargetOffset = Float(collectionCustom.contentSize.width)
}
targetContentOffset.x = CGFloat(currentOffset)
collectionCustom.setContentOffset(CGPoint(x: CGFloat(newTargetOffset), y: CGFloat(0)), animated: true)
var index: Int = Int(newTargetOffset/pageWidth)
var cell: UICollectionViewCell? = collectionCustom.cellForItem(at: IndexPath(item: index, section: 0))
cell = collectionCustom.cellForItem(at: IndexPath(item: index + 1, section: 0))
}
}
bekommen sollten Können Sie mehr Beschreibung des Verhaltens fügen Sie erleben und das gewünschte Verhalten? – nathan
Nichts in dem Code, den Sie in die Frage eingegeben haben, verursacht das Problem. Sie müssen mehr Code hinzufügen oder versuchen, es selbst zu debuggen und einige weitere Debug-Informationen hinzuzufügen. – Fogmeister
Ich möchte, dass die 'collectionView' 4 Zellen pro Seite zeigt, was richtig geht, aber wenn ich zwischen 5 und 7 Zellen habe, wird die nächste Seite im Protokoll nicht angezeigt, und deshalb werde ich zurückgescrollt die erste Zelle. Es funktioniert gut mit 8 Objekten und gleich mit Vielfachen von 4. Idealerweise würde ich gerne 3 Zellen sehen, wenn ich 7 Objekte habe, und so weiter, aber es zeigt mir ständig 4 an. – Christian