An easy-to-use Collection View Layout for card-like animation ๐
CarLensCollectionViewLayout was created out of the implementation in CarLens application ๐. The image above exactly shows the screen from the app!
CarLensCollectionViewLayout is written in Swift 4.2 and supports iOS 9.0+.
The two main steps are needed for the configuration of CarLensCollectionViewLayout:
Assign CarLensCollectionViewLayout
to yours collection view layout:
collectionView.collectionViewLayout = CarLensCollectionViewLayout()
or initialize your collection view with CarLensCollectionViewLayout
:
UICollectionView(frame: .zero, collectionViewLayout: CarLensCollectionViewLayout())
Subsclass CarLensCollectionViewCell
and call configure(topView: UIView, cardView: UIView)
during the cellโs initialization:
class CollectionViewCell: CarLensCollectionViewCell {
override init(frame: CGRect) {
super.init(frame: frame)
configure(topView: upperView, cardView: bottomView)
}
}
The sample implementation is available in Demo project.
You can also initialize CarLensCollectionViewLayout
with a CarLensCollectionViewLayoutOptions
object by passing any of the parameters available. Others will be configured automatically.
Parameters:
minimumSpacing
- A minimum spacing between cells.
decelerationRate
- A deceleration for a scroll view.
shouldShowScrollIndicator
- A value indicating whether collection view should have a scroll indicator.
itemSize
- The size to use for cells.
Example:
let options = CarLensCollectionViewLayoutOptions(minimumSpacing: 40)
collectionView.collectionViewLayout = CarLensCollectionViewLayout(options: options)
While subsclassing CarLensCollectionViewCell
you can call configure(...)
with an additional parameter topViewHeight
. The card view height will be calculated based on this value.
Example:
class CollectionViewCell: CarLensCollectionViewCell {
override init(frame: CGRect) {
super.init(frame: frame)
configure(topView: upperView, cardView: bottomView, topViewHeight: 300)
}
}
If you're using CocoaPods, add the following dependency to your Podfile
:
use_frameworks!
pod 'CarLensCollectionViewLayout', '~> 1.2.0'
If you're using Carthage, add the following dependency to your Cartfile
:
github "netguru/CarLensCollectionViewLayout" ~> 1.2.0
This project is made with โค๏ธ by Netguru and maintained by Anna-Mariia Shkarlinska.
CarLensCollectionViewLayout is licensed under the MIT License. See LICENSE.md for more info.