【问题标题】:Update a label when scrolling in my UICollectionView在我的 UICollectionView 中滚动时更新标签
【发布时间】:2015-11-09 05:01:36
【问题描述】:

我有一个日历,其中包含集合视图中的每个月。当您向下滚动时,它会以网格形式显示每个月(因此它看起来像日历),每个月之间都有填充。

我想更新屏幕顶部的标签以更改为您正确关注的月份。因此,当您滚动时,当您越过屏幕上的某个点时,它会在顶部从一个月变为另一个。

例如,我在顶部并且标签上写着“一月”,然后我向下滚动到我在二月的位置(一月的一部分可能仍然在上方可见,三月的一部分可能在下方可见) ,但我希望二月出现在标签上。也许是我指定的一些假想的分界线导致标签更新。

这样的事情可能吗?我该从哪里开始?

谢谢!

【问题讨论】:

  • 查看UICollectionView Delegate 类参考。像collectionView:willDisplayCell:forItemAtIndexPath: 这样的东西可以工作。 CollectionViews 也是 UIScrollView 的子类。所以也请查看class reference
  • 基本上你想要一个在用户滚动或新项目可见时调用的函数。 UIScrollViewDelegate 中检测连续滚动的功能非常低效。当新项目可见时触发的 UICollectionViewDelegate 函数将需要一些数学来确定何时更新标签。
  • 好的,谢谢!欣赏它:)

标签: ios swift uicollectionview ios9 uicollectionviewlayout


【解决方案1】:

果然,这里的 cmets 把我带到了我需要去的地方。非常感谢您的帮助!

func scrollViewDidScroll(scrollView: UIScrollView) {
     let offsetY = scrollView.contentOffset.y
     let contentHeight = scrollView.contentSize.height
     let month = ((Int( (offsetY) / (contentHeight / 12))+1))
     //then just do what I need with 'month'
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    相关资源
    最近更新 更多