我们有一个集合视图。我制作了一个日历,横向显示日期和我水平滚动日期。现在在屏幕上我只看到3-4个日期。现在我想在我显示的日历屏幕时自动滚动到特定的选定日期。所以我想要滚动到的日期还不可见。
为此,我获得了特定单元格的索引路径。现在我正在尝试将其滚动到特定的索引路径。
func scrollCollectionView(indexpath:IndexPath)
{
// collectionView.scrollToItem(at: indexpath, at: .left, animated: true)
//collectionView.selectItem(at: indexpath, animated: true, scrollPosition: .left)
collectionView.scrollToItem(at: indexpath, at: .centeredHorizontally, animated: true)
_ = collectionView.dequeueReusableCell(withReuseIdentifier: "DayCell", for: indexpath) as? DayCell
}
请告诉我该如何实施?
答案 0 :(得分:20)
在控制器的viewDidLoad
中,您可以编写代码以滚动到集合视图的特定索引路径。
self.collectionView.scrollToItem(at:IndexPath(item: indexNumber, section: sectionNumber), at: .right, animated: false)
答案 1 :(得分:6)
您可以使用此
self.collectionView.scrollToItem(at:IndexPath(item: index, section: 0), at: .right, animated: false)
答案 2 :(得分:3)
我使用了你的答案@PGDev,但我把它放在viewWillAppear
中,这对我很有用。
self.collectionView?.scrollToItem(at:IndexPath(item: yourIndex, section: yourSection), at: .left, animated: false)
答案 3 :(得分:2)
在SWift 4中,这对我有用:
override func viewDidLayoutSubviews() {
collectionView.scrollToItem(at:IndexPath(item: 5, section: 0), at: .right, animated: false)
}
将其放置在其他任何地方只会产生奇怪的视觉效果。
答案 4 :(得分:0)
在控制器的viewDidLoad中,您可以编写代码
self.myCollectionView.performBatchUpdates(nil) { (isLoded) in
if isLoded{
self.myCollectionView.scrollToItem(at: self.passedContentOffset, at: [.centeredVertically,.centeredHorizontally], animated: false)
}
}
答案 5 :(得分:0)
我都试过了,但对我来说,它只适用于多加一行
self.collectionView.scrollToItem(at:IndexPath(item: index, section: 0), at: .right, animated: false)
collectionView.layoutSubviews()
你可以在任何地方调用它。
答案 6 :(得分:0)
测试了这个
func scrollToIndex(index:Int) {
let rect = self.collectionView.layoutAttributesForItem(at:IndexPath(row: index, section: 0))?.frame
self.collectionView.scrollRectToVisible(rect!, animated: true)
}