ios - UICollectionView 捕捉到 0,0 - 滚动超过边界

标签 ios swift uicollectionview

我有一个水平 Collection View 。本质上,第一个显示的项目是“事件”项目。滑动即可捕捉到每个项目。

我遇到的问题是我需要能够滚动最后一个项目以一直捕捉到前面。目前,当拖动到末尾时,它不再捕捉到第一个单元格。

抱歉,如果我没有任何意义。本质上,每个单元格最左边的框架应该捕捉到 collectionView 的 0,0。目前对于前 2 个单元来说效果非常好。但在那之后它就达到了界限并且不允许它折断。我希望能够拖动并最终的单元格捕捉到 0,0

谢谢!

在这里查看问题:

enter image description here

这是我的布局子类:

class UserFlowLayout: UICollectionViewFlowLayout {
    required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) }

    override init() {
        super.init()
        scrollDirection = .horizontal
        itemSize = CGSize(width: 70, height: 90)
        minimumInteritemSpacing = 15.0
        minimumLineSpacing = 15.0
    }

    override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint {
        guard let collectionView = collectionView else { return super.targetContentOffset(forProposedContentOffset: proposedContentOffset, withScrollingVelocity: velocity) }

        var offsetAdjustment = CGFloat.greatestFiniteMagnitude
        let horizontalOffset = proposedContentOffset.x + collectionView.contentInset.left

        let targetRect = CGRect(x: proposedContentOffset.x, y: 0, width: collectionView.bounds.size.width, height: collectionView.bounds.size.height)

        let layoutAttributesArray = super.layoutAttributesForElements(in: targetRect)

        layoutAttributesArray?.forEach({ (layoutAttributes) in
            let itemOffset = layoutAttributes.frame.origin.x
            if fabsf(Float(itemOffset - horizontalOffset)) < fabsf(Float(offsetAdjustment)) {
                offsetAdjustment = itemOffset - horizontalOffset
            }
        })

        return CGPoint(x: proposedContentOffset.x + offsetAdjustment, y: proposedContentOffset.y)
    }

}

最佳答案

在我看来,它正试图向右滚动得更远。您需要扩大 ScrollView 以包含右侧的空白区域。

您当前的屏幕宽度似乎是 4 个单元格 + X,因此您需要在最后一个单元格后留出 +X 个空白空间。

关于ios - UICollectionView 捕捉到 0,0 - 滚动超过边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46823900/

相关文章:

iOS Swift 转场

ios - 我们可以在不上传任何数据的情况下使用 algolia 进行地理编码相关搜索吗?

iphone - 在 Xcode 4 中创建弹出 View

ios - Swift 3 中的 UICollectionView 自定义按钮操作

ios - 点击该单元格时,如何访问 uicollectionviewcell 内标签的文本属性? ( swift )

objective-c - iPhone 中的网页 View

ios - 尝试开始将数据从一个 View Controller 传输到另一个 View Controller 时出现断点错误

swift - 不符合 UITableViewDataSource

arrays - Swift - 级联选择器

ios - 如何覆盖 UICollectionVIew 滚动指示器?