[英]Synchronize scrolling with two collection views in Swift?
有沒有一種做法可以滾動帶有單元格的集合視圖,並根據其內容偏移量來滾動另一個集合視圖?
我有一個具有兩個單元格並水平滾動的主集合視圖。 然后,我有了第二個集合視圖,其中的單元格可以垂直滾動。 發生的情況是,當我向上滾動然后水平滾動到第二個垂直簡歷時,它與第一個垂直簡歷沒有同步。
我在垂直滾動的集合視圖(不是主要視圖,因為它是水平滾動)中覆蓋了scrollViewDidScroll,但是沒有用(**表示不能發揮作用的部分)。
var didScrollPastProfileView: Bool = false
func scrollViewDidScroll(scrollView: UIScrollView) {
let collectionViewDictionary = ["scrollView": self.collectionView]
NSNotificationCenter.defaultCenter().postNotificationName("cvDidScroll", object: nil, userInfo: collectionViewDictionary)
if scrollView.contentOffset.y > 250 {
**self.didScrollPastProfileView = true
if self.didScrollPastProfileView {
let previousContentOffset = scrollView.contentOffset.y
scrollView.contentOffset.y = previousContentOffset
}**
} else if scrollView.contentOffset.y < 250 {
**let previousContentOffset = scrollView.contentOffset.y
scrollView.contentOffset.y = previousContentOffset
self.didScrollPastProfileView = false**
}
}
這是一個視覺效果:
請注意,當我滾動到第二個單元格時上方有空間嗎? 我希望該垂直滾動視圖遵循第一個。 有什么建議么?
編輯:在第一個單元格中滾動時,我嘗試訪問水平集合視圖的第二個單元格;在第一個單元格中向下滾動時,我嘗試更改contentOffSet.y,但出現EXC_BAD_ACCESS錯誤。
if scrollView.contentOffset.y <= 250.0 {
let groupsPosts = childViewControllerForPosts.collectionView(childViewControllerForPosts.collectionView!, cellForItemAtIndexPath: NSIndexPath(forItem: 1, inSection: 0)) as! FeedCell
groupsPosts.collectionView.contentOffset.y = -scrollView.contentOffset.y
self.topVerticalConstraint?.constant = -scrollView.contentOffset.y
當滾動到collectionViewB
時,如果將其animated
為false
,則可以執行類似的操作,以使其看起來已同步。
let indexPath = collectionViewA.indexPathsForVisibleItems().first
self.collectionViewB.scrollToItemAtIndexPath(indexPath, atScrollPosition: UICollectionViewScrollPosition.Top, animated: false)
不完全確定如何設置這兩個集合。 如果您無權訪問collectionViewA
則可能必須將當前的indexPath保存到變量並將其傳遞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.