UICollectionView 自定义分页,实现任意分页效果

/// 自定义分页
public class ShtPageCollectionViewLayout: UICollectionViewFlowLayout {
    override public func prepare() {
        super.prepare()
        collectionView?.decelerationRate = .fast
        collectionView?.isPagingEnabled = false
    }
    
    override public func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint {
        guard let collectionView = collectionView else {
            return super.targetContentOffset(forProposedContentOffset: proposedContentOffset, withScrollingVelocity: velocity)
        }
        
        let pageWidth = itemSize.width + minimumLineSpacing
        
        let approximatePage = collectionView.contentOffset.x / pageWidth
        
        let currentPage = velocity.x == 0 ? round(approximatePage) : (velocity.x < 0.0 ? floor(approximatePage) : ceil(approximatePage))
        
        let margin = (collectionView.bounds.size.width - itemSize.width) * 0.5
        
        let newHorizontalOffset = sectionInset.left + currentPage * pageWidth - margin

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

友情链接更多精彩内容