ParallaxOverlay 0.1

ParallaxOverlay 0.1

Marek Fort 维护。



  • 作者:
  • Marek Fort

ParallaxOverlay

CI Status Version License Swift Package Manager Twitter: @marekfort

demo

ParallaxOverlay 是如果您想在 UICollectionView 中的 overlay 视图中使用视差效果的快速解决方案。

安装

SPM

ParallaxOverlay 通过 Swift Package Manager 提供支持。

使用 Xcode 11,转到 文件 -> Swift Packages -> 添加包依赖 并输入 https://github.com/fortmarek/ParallaxOverlay

CocoaPods

ParallaxOverlay 通过 CocoaPods 提供。要安装,只需将以下行添加到 Podfile

pod 'ParallaxOverlay'

实现这个非常简单,首先使用提供的自定义 UICollectionViewFlowLayout

let parallaxLayout = ParallaxLayout()
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: parallaxLayout)

// Our collection view needs to be bigger than our `view`, otherwise the cells would die when off-screen and our parallax values would just disappear
let collectionViewOverlap: CGFloat = 30
collectionView.contentInset = UIEdgeInsets(top: 0, left: -collectionViewOverlap, bottom: 0, right: collectionViewOverlap)
collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: -collectionViewOverlap).isActive = true
collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: collectionViewOverlap).isActive = true

然后转到您在 UICollectionView 中使用的 UICollectionViewCell,并在这个 UICollectionView 中实现 func apply(_ layoutAttributes: UICollectionViewLayoutAttributes) 函数,我们需要指定如何实际上应用我们的视差

// Applying parallaxValue
override func apply(_ layoutAttributes: UICollectionViewLayoutAttributes) {
    super.apply(layoutAttributes)

    guard let layoutAttributes = layoutAttributes as? ParallaxLayoutAttributes else { return }

    // Max horizontal parallax from initial position
    let maxHorizontalParallax: CGFloat = 80

    // Default leading offset of infoStackView
    yourParallaxConstraint.constant = layoutAttributes.parallaxValue * maxHorizontalParallax
}

在这个函数中,我们只需将 parallaxValue 应用于我们希望移动轴的约束。

... 然后我们就准备好了!🙂享受编程乐趣🚀