UICollectTionView加UIViewController对外组合模块

功能是左右滑。

三大关键对外值:

1.progress (进度)其实就是一个比例值 。 (吐槽一下,貌似比较难的布局都喜欢或者说都会用到比例这种方式)

2.sourceIndex(原index)

3.targetIndex (目标index)


步骤一:

判断左右滑动

偏移量与旧的偏移量进行对比:

if(变大){
则是左滑
}else if(变小){
则是右滑
}

// 2.判断是左滑还是右滑
        let currentOffsetX = scrollView.contentOffset.x
        let scrollViewW = scrollView.bounds.width
        if currentOffsetX > startOffsetX { // 左滑
            // 1.计算progress
            progress = currentOffsetX / scrollViewW - floor(currentOffsetX / scrollViewW)
            
            // 2.计算sourceIndex
            sourceIndex = Int(currentOffsetX / scrollViewW)
            
            // 3.计算targetIndex
            targetIndex = sourceIndex + 1
            if targetIndex >= childVcs.count {
                targetIndex = childVcs.count - 1
            }
            
            // 4.如果完全划过去
            if currentOffsetX - startOffsetX == scrollViewW {
                progress = 1
                targetIndex = sourceIndex
            }
        } else { // 右滑
            // 1.计算progress
            progress = 1 - (currentOffsetX / scrollViewW - floor(currentOffsetX / scrollViewW))
            
            // 2.计算targetIndex
            targetIndex = Int(currentOffsetX / scrollViewW)
            
            // 3.计算sourceIndex
            sourceIndex = targetIndex + 1
            if sourceIndex >= childVcs.count {
                sourceIndex = childVcs.count - 1
            }
        }
        // 3.将progress/sourceIndex/targetIndex传递给titleView
        delegate?.pageContentView(self, progress: progress, sourceIndex: sourceIndex, targetIndex: targetIndex)```
点评:
> progress = currentOffsetX / scrollViewW - floor(currentOffsetX / scrollViewW)

1.利用floor函数取整,比较方便

2.
>progress = 1 - (currentOffsetX / scrollViewW - floor(currentOffsetX / scrollViewW))

1减就实现了从左变右滑了

3.防越界
超就减1,当回退了,好思路

4.
            if currentOffsetX - startOffsetX == scrollViewW {
                progress = 1
                targetIndex = sourceIndex
            }

    完全划过去在这种处理方式里算是比较特殊的情况了


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容