【问题标题】:UIPageControl with UICollectionView/TableView带有 UICollectionView/TableView 的 UIPageControl
【发布时间】:2014-08-21 02:46:39
【问题描述】:

我有一个 UICollectionView(单行,垂直对齐)与一个 UIPageControl 关联。

UIPageControl 将以点数作为我的集合视图中的项目数。

我想在按下点时更改/滚动 collectionView 的位置。 此外,我想根据集合视图的滚动来改变选中的点。

关于scrollViewDidScroll 方法的某种算法是否也能实现这一点?

提前致谢

【问题讨论】:

标签: ios ios7 uiscrollview uicollectionview uipagecontrol


【解决方案1】:

如果我理解正确的话,我想你可以通过UICollectionViewDataSourcecollectionView:cellForItemAtIndexPath: 方法来做到这一点 每当从数据源请求项目时,您都可以在 UIPageControl 上选择相关的点。 这有帮助吗?

【讨论】:

  • 这行不通,因为当请求一个单元格时,它不会在那个时刻显示,你有比前一个单元格更多的可见区域
  • @DaSilva 是的,但取决于您随时在屏幕上显示的单元格数量,您可以知道哪个单元格显示在“中间”。假设您一次可以显示一个单元格,并且您收到对单元格 3 的请求,那么您知道当前可见的单元格是 2。
  • 我想我找到了更好的解决方案@vishalv2050。请在下面查看我的答案
【解决方案2】:

我有一个简单的解决方案。 在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];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-23
    • 2014-12-27
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 2014-02-22
    • 1970-01-01
    相关资源
    最近更新 更多