SwiftSpreadsheet alternatives and similar libraries
Based on the "UICollectionView" category.
Alternatively, view SwiftSpreadSheet alternatives based on common mentions on social networks and blogs.
:octocat: Gliding Collection is a smooth, flowing, customizable decision for a UICollectionView Swift Controller. iOS library made by @Ramotion
7.5 0.0 SwiftSpreadsheet VS Card Slider:octocat: 🃏 Cardslider is a design UI controller that allows you to swipe through cards with pictures and accompanying descriptions.
🔄 GravitySlider is a beautiful alternative to the standard UICollectionView flow layout.
An easy-to-use Collection View Layout for card-like animation.
UICollectionViewSplitLayout makes collection view more responsive.
2.9 0.9 SwiftSpreadsheet VS SimpleSourceEasy and type-safe iOS table and collection views in Swift.
This is an example project for my article called "UICollectionView Tutorial: Changing presentation on the fly"
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of SwiftSpreadsheet or a related project?
To run the example project, clone the repo, and run
pod install from the Example directory first.
SwiftSpreadsheet is available through CocoaPods. To install it, simply add the following line to your Podfile:
A short introduction on how to get started:
The rows of the spreadsheet represent a section in the collection view, with columns being the respective items.
The leftmost and the rightmost elements of the spreadsheet (
rightRowHeadline), as well as the topmost and the bottommost elements (
bottomColumnFooter) are represented as
UISupplementaryView, which — if needed — have to be registered with the respective identifiers of the provided enum
ViewKindType (refer to the example code).
The corners of the resulting spreadsheet are represented as
UIDecorationView which can be passed as
UINib or as
AnyClass upon initialization of the layout. To allow more flexibilty you have to pass the given nib or class via the
DecorationViewType enum. Its cases hold one of the respective types as associative value:
A short example:
//Register SupplementaryViews first, then initialize the layout with optional Nibs/Classes for the DecorationViews let layout = SpreadsheetLayout(delegate: self, topLeftDecorationViewType: .asNib(topLeftDecorationViewNib), topRightDecorationViewType: .asNib(topRightDecorationViewNib), bottomLeftDecorationViewType: .asClass(bottomLeftDecorationViewClass), bottomRightDecorationViewType: .asClass(bottomRightDecorationViewClass)) //Default is true, set false here if you do not want some of these sides to remain sticky layout.stickyLeftRowHeader = true layout.stickyRightRowHeader = true layout.stickyTopColumnHeader = true layout.stickyBottomColumnFooter = true self.collectionView.collectionViewLayout = layout
Implement the provided
SpreadsheetLayoutDelegate. The methods are straightforward. Simply pass
nil wherever you do not want supplementary views to be displayed (leftmost, rightmost, topmost and bottommost).
//On Layout: layout.resetLayoutCache() //Helper Method for collection view collectionView.reloadDataAndSpreadsheetLayout()
So in short:
1) Register the respective objects of type
UISupplementaryView you want to use with the provided identifiers of the enum
2) Create a
UINib object for each
UIDecrationView (corner of the Spreadsheet) and pass it upon initialization of the layout.
3) Initialize the layout with the provided convenience initializer and pass the delegate as well as the required decoration views.
4) Implement the
5) Set the content of your cells and the supplementary views in the data source methods of your collection view.
6) Enjoy ;)
Please refer to the demo application or contact me directly.
indiControl GmbH owns the Copyright of the respective SwiftSpreadsheet.swift file.
SwiftSpreadsheet is available under the MIT license. See the LICENSE file for more info.
*Note that all licence references and agreements mentioned in the SwiftSpreadsheet README section above are relevant to that project's source code only.