【问题标题】:Preventing UICollectionView from scrolling outside of contentOffset防止 UICollectionView 在 contentOffset 之外滚动
【发布时间】:2020-09-18 02:03:54
【问题描述】:

我创建了一个包含 4 个单元格的 collectionView,单元格框架等于整个窗口框架,因此我可以滚动浏览它们,因为它们是 PageViewController。

lazy var collectionView : PagesCollectionView = {
  let layout = UICollectionViewFlowLayout()
   layout.scrollDirection = .horizontal
  layout.minimumLineSpacing = 0
    let collectionView = PagesCollectionView(frame: .zero, collectionViewLayout: layout)
    collectionView.delegate = self
    collectionView.dataSource = self
    collectionView.isPagingEnabled = true
    collectionView.alwaysBounceHorizontal = false

    return collectionView
}()

我想要实现的目标是,当我在第一个单元格并在左侧滚动(contentOffset 为负)时,collectionView 滚动停止,当我在最后一个单元格时,collectionView 停止向正确方向滚动,我还想看细胞。

我尝试了不同的程序: 这个只有在第一次滚动后才阻止滚动视图,从不重新启用另一个方向的滚动:

 func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if(scrollView.contentOffset.x == 0){
        scrollView.isScrollEnabled = false
    }

}

根据其他 StackOverflow 主题的建议:

  func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
        if(scrollView.contentOffset.x == 0){
            collectionView.isScrollEnabled = false

        }

        collectionView.isScrollEnabled = true

    }

但这只会阻止双向滚动。 我其实不知道如何解决这个问题。

【问题讨论】:

    标签: ios swift uicollectionview uiscrollview uiscrollviewdelegate


    【解决方案1】:

    我居然想出了如何解决这个问题,真的很简单。

    在我设置 collectionView 的 viewDidLoad 方法中,我将反弹设置为 false:

     collectionView.bounces = false
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 2017-08-03
      相关资源
      最近更新 更多