2014-06-30 59 views
1

我有一個UICollectionView(一行,垂直對齊)與UIPageControl相關聯。UIPageControl with UICollectionView/TableView

UIPageControl將具有點數作爲我的收藏視圖中的項目數。

我想要改變/滾動collectionView的位置,當點按下時。 此外,我想根據收集視圖的滾動更改選定的點。

關於scrollViewDidScroll方法的某種算法的任何想法也實現了這一點?

在此先感謝

+0

[?iOS6的UICollectionView和UIPageControl - 如何獲得可見細胞]的可能的複製(http://stackoverflow.com/questions/ 13176333/ios6-uicollectionview-and-uipagecontrol-how-to-get-visible-cell) – iosMentalist

回答

4

我有一個簡單的解決方案。 在scrollViewDidScroll只是檢查可見單元格在屏幕中間的方法:

CGRect visibleRect = (CGRect){.origin = self.collectionView.contentOffset, .size = self.collectionView.bounds.size}; 
CGPoint visiblePoint = CGPointMake(CGRectGetMidX(visibleRect), CGRectGetMidY(visibleRect)); 
NSIndexPath *visibleIndexPath = [self.collectionView indexPathForItemAtPoint:visiblePoint]; 
[self.pageControl updateStateForPageNumber: (int)visibleIndexPath.row]; 
0

如果我理解正確的話,我想你可以通過UICollectionViewDataSource 每當一個項目是從您可以選擇在UIPageControl相關點的數據源請求的collectionView:cellForItemAtIndexPath:方法做到這一點。 這幫忙嗎?

+0

這是行不通的,因爲當一個單元被請求時,它不會在那一刻顯示出來,從前一個單元中有更多的可見區域 – DaSilva

+0

@DaSilva是的,但取決於您在屏幕上隨時顯示的細胞數量,您可以在「中間」顯示哪個細胞正在顯示。假設你可以一次顯示一個單元格,並且你得到了單元格3的請求,那麼你知道當前可見的那個是2. – vishalv2050

+0

我想我找到了更好的解決方案@ vishalv2050。在下面回答我的答案 – DaSilva