SwiftSpreadsheet alternatives and similar libraries
Based on the "UICollectionView" category.
Alternatively, view SwiftSpreadSheet alternatives based on common mentions on social networks and blogs.
-
FSPagerView
FSPagerView is an elegant Screen Slide Library. It is extremely helpful for making Banner View、Product Show、Welcome/Guide Pages、Screen/ViewController Sliders. -
CollectionViewSlantedLayout
A CollectionView Layout displaying a slanted cells -
Gliding Collection
:octocat: Gliding Collection is a smooth, flowing, customizable decision for a UICollectionView Swift Controller. iOS library made by @Ramotion -
CenteredCollectionView
A lightweight UICollectionViewLayout that 'pages' and centers its cells 🎡 written in Swift -
Card Slider
:octocat: 🃏 Cardslider is a design UI controller that allows you to swipe through cards with pictures and accompanying descriptions. -
RAReorderableLayout
A UICollectionView layout which can move an item with drag and drop. -
GravitySlider
🔄 GravitySlider is a beautiful alternative to the standard UICollectionView flow layout. -
ReplaceAnimation
Pull-to-refresh animation in UICollectionView with a sticky header flow layout, written in Swift :large_orange_diamond: -
Blueprints
:cyclone: Blueprints - A framework that is meant to make your life easier when working with collection view flow layouts. -
CardsLayout
:star: Custom card-designed CollectionView layout -
CarLensCollectionViewLayout
An easy-to-use Collection View Layout for card-like animation. -
CollectionViewShelfLayout
A UICollectionViewLayout subclass displays its items as rows of items similar to the App Store Feature tab without a nested UITableView/UICollectionView hack. -
ASCollectionView
Lightweight custom collection view inspired by Airbnb. -
UICollectionViewSplitLayout
UICollectionViewSplitLayout makes collection view more responsive. -
SimpleSource
Easy and type-safe iOS table and collection views in Swift. -
AZCollectionViewController
Easy way to integrate pagination with dummy views in CollectionView, make Instagram "Discover" within minutes. -
CheckmarkCollectionViewCell
UICollectionViewCell with checkbox when it isSelected and empty circle when not - like Photos.app "Select" mode. -
FlexibleRowHeightGridLayout
A UICollectionView grid layout designed to support Dynamic Type by allowing the height of each row to size to fit content. -
CustomCollectionLayout
This is an example project for my article called "UICollectionView Tutorial: Changing presentation on the fly" -
GoodProvider
🚀UITableView and UICollectionView provider to simplify basic scenarios of showing the data.
Appwrite - The Open Source Firebase alternative introduces iOS support
* 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?
README
SwiftSpreadsheet
Example
To run the example project, clone the repo, and run pod install
from the Example directory first.
Requirements
Swift 5.0
Installation
SwiftSpreadsheet is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "SwiftSpreadsheet"
Demo
Quick start
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 (leftRowHeadline
and rightRowHeadline
), as well as the topmost and the bottommost elements (topColumnHeader
and 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: asNib(myNib)
or asClass(myClass)
.
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).
Reload Layout:
//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 ViewKindType
.
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 SpreadsheetLayoutDelegate
.
5) Set the content of your cells and the supplementary views in the data source methods of your collection view.
6) Enjoy ;)
Questions
Please refer to the demo application or contact me directly.
Author
Wojtek Kordylewski.
indiControl GmbH owns the Copyright of the respective SwiftSpreadsheet.swift file.
License
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.