1

我遇到了这个演示,真的很想学习如何做到这一点:

在此处输入图像描述

到目前为止,我已经为 UICollectionViewFlowLayout 创建了一个子类,它淡出单元格的开头和结尾。取自https://gist.github.com/vinhnx/bb1354b247ebfe3790563173ac72baa9

这是淡出开始和结束单元格的部分

for attrs in attributes {
    if attrs.frame.intersects(rect) {
        let distance = visibleRect.midY - attrs.center.y
        let normalizedDistance = abs(distance) / (visibleRect.height * fadeFactor)
        let fade = 1 - normalizedDistance
        attrs.alpha = fade
    }
}

如何使顶部的单元格保持静止而不继续向上滑动?

处理淡入淡出的函数的完整代码:

override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
    let attributesSuper: [UICollectionViewLayoutAttributes] = super.layoutAttributesForElements(in: rect) as [UICollectionViewLayoutAttributes]!
    if let attributes = NSArray(array: attributesSuper, copyItems: true) as? [UICollectionViewLayoutAttributes]{
        var visibleRect = CGRect()
        visibleRect.origin = collectionView!.contentOffset
        visibleRect.size = collectionView!.bounds.size
        for attrs in attributes {
            if attrs.frame.intersects(rect) {
                let distance = visibleRect.midY - attrs.center.y
                let normalizedDistance = abs(distance) / (visibleRect.height * fadeFactor)
                let fade = 1 - normalizedDistance
                attrs.alpha = fade
                print(fade)
            }
        }
        return attributes
    }else{
        return nil
    }
}

我的应用程序现在的外观: 在此处输入图像描述

4

0 回答 0