Dwifft alternatives and similar libraries
Based on the "Table View" category.
Alternatively, view Dwifft alternatives based on common mentions on social networks and blogs.
DZNEmptyDataSet9.9 0.0 L1 Dwifft VS DZNEmptyDataSetA drop-in UITableView/UICollectionView superclass category for showing empty datasets whenever the view has no content to display
folding-cell9.8 0.0 L4 Dwifft VS folding-cell:octocat: 📃 FoldingCell is an expanding content cell with animation made by @Ramotion
SWTableViewCell9.7 0.0 L3 Dwifft VS SWTableViewCellAn easy-to-use UITableViewCell subclass that implements a swippable content view which exposes utility buttons (similar to iOS 7 Mail Application)
MGSwipeTableCell9.7 0.0 L4 Dwifft VS MGSwipeTableCellAn easy to use UITableViewCell subclass that allows to display swippable buttons with a variety of transitions.
CSStickyHeaderFlowLayout9.4 0.0 L4 Dwifft VS CSStickyHeaderFlowLayoutUICollectionView replacement of UITableView. Do even more like Parallax Header, Sticky Section Header. Made for iOS 7.
AMWaveTransition8.6 0.0 L4 Dwifft VS AMWaveTransitionCustom transition between viewcontrollers holding tableviews
preview-transition8.4 0.0 L5 Dwifft VS preview-transition:octocat: PreviewTransition is a simple preview gallery UI controller with animated tranisitions. Swift UI library made by @Ramotion
GSKStretchyHeaderView8.1 2.2 L5 Dwifft VS GSKStretchyHeaderViewA generic stretchy header for UITableView and UICollectionView
ParallaxTableViewHeader7.7 0.0 L3 Dwifft VS ParallaxTableViewHeaderParallax scrolling effect on UITableView header view when a tableView is scrolled
Static7.5 0.0 L5 Dwifft VS StaticSimple static table views for iOS in Swift.
ZYThumbnailTableView7.0 0.0 L4 Dwifft VS ZYThumbnailTableViewa TableView have thumbnail cell only, and you can use gesture let it expands other expansionView, all diy
TableKit6.2 0.0 L5 Dwifft VS TableKitType-safe declarative table views.
Preheat5.7 0.0 L5 Dwifft VS PreheatAutomates prefetching of content in UITableView and UICollectionView
QuickTableViewController5.6 4.4 L3 Dwifft VS QuickTableViewControllerA simple way to create a UITableView for settings in Swift.
MEVFloatingButton4.4 0.0 L5 Dwifft VS MEVFloatingButtonAn iOS drop-in UITableView, UICollectionView and UIScrollView superclass category for showing a customizable floating button on top of it.
ConfigurableTableViewController4.1 0.0 L5 Dwifft VS ConfigurableTableViewControllerTyped, yet Flexible Table View Controller
AEAccordion3.7 0.0 L5 Dwifft VS AEAccordionSimple and lightweight UITableViewController with accordion effect (expand / collapse cells)
VBPiledView3.4 0.0 L3 Dwifft VS VBPiledViewSimple and beautiful stacked UIView to use as a replacement for an UITableView, UIImageView or as a menu
SelectionList2.8 0.0 Dwifft VS SelectionListSimple single-selection or multiple-selection checklist, based on UITableView
OKTableViewLiaison2.3 0.0 Dwifft VS OKTableViewLiaisonFramework to help you better manage UITableViews
BWSwipeRevealCell2.2 0.0 L4 Dwifft VS BWSwipeRevealCellA Swift library for swipeable table cells
YXTPageView2.0 0.0 L5 Dwifft VS YXTPageViewA PageView, which supporting scrolling to transition between a UIView and a UITableView
MVVMC-Demo1.9 0.0 Dwifft VS MVVMC-DemoThis is the demo of MVVM-C structure with dependency injection using RxSwift.
ThunderTable1.3 0.0 Dwifft VS ThunderTableA declarative wrapper approach to UITableView
StaticTableViewControllerDynamically hide / show cells of static UITableViewController
Lightning-Table1.0 0.0 L5 Dwifft VS Lightning-TableA declarative api for working with UITableView.
CollapsableTableKit0.7 4.2 L5 Dwifft VS CollapsableTableKitA kit for building tableviews with a collapsable animation, for each section.
InfiniteScrollKit0.4 4.0 Dwifft VS InfiniteScrollKitA kit for building tableviews with a paging animation.
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 Dwifft or a related project?
In 10 seconds
Dwifft is a small Swift library that tells you what the "diff" is between two collections, namely, the series of "edit operations" required to turn one into the other. It also comes with UIKit bindings, to automatically, animatedly keep a UITableView/UICollectionView in sync with a piece of data by making the necessary row/section insertion/deletion calls for you as the data changes.
Dwifft is a Swift library that does two things. The first thing sounds interesting but perhaps only abstractly useful, and the other thing is a very concretely useful thing based off the first thing.
The first thing (found in
Dwifft.swift) is an algorithm that calculates the diff between two collections using the Longest Common Subsequence method. If this kind of thing is interesting to you, there's a pretty great paper on diffing algorithms: http://www.xmailserver.org/diff2.pdf
The second thing (found in
Dwifft+UIKit.swift) is a series of diff calculators for
UICollectionViews. Let's say you have a
UITableView that's backed by a simple array of values (like a list of names, e.g.
["Alice", "Bob", "Carol"]. If that array changes (maybe Bob leaves, and is replaced by Dave, so our list is now
["Alice, "Carol", "Dave"]), we'll want to update the table. The easiest way to do this is by calling
reloadData on it. This has a couple of downsides: the transition isn't animated, and it'll cause your user to lose their scroll position if they've scrolled the table. The nicer way is to use the
deleteRowsAtIndexPaths:withRowAnimation methods on
UITableView, but this requires you to figure out which index paths have changed in your array (in our example, you'd have to figure out that the row at index 1 should be removed, and a new row should be inserted at index 2 should then be added). If only we had a way to diff the previous value of our array with it's new value. Wait a minute.
When you wire up a
TableViewDiffCalculator to your
UITableView (or a
CollectionViewDiffCalculator to your
UICollectionView, it'll automatically calculate diffs and trigger the necessary animations on it whenever you change its
sectionedValues property. Neat, right? Notably, as of Dwifft 0.6, Dwifft will also figure out section insertions and deletions, as well as how to efficiently insert and delete rows across different sections, which is just so massively useful if you have a multi-section table. If you're currently using a <0.6 version of Dwifft and want to do this, read the 0.6 release notes.
Even longer version
Learn more about the history of Dwifft, and how it works, in this exciting video of a talk recorded at the Brooklyn Swift meetup in March 2017.
Why you should use Dwifft
- Dwifft is useful - it can help you build a substantially better user experience if you have table/collection views with dynamic content in your app.
- Dwifft is safe - there is some non-trivial index math inside of this diff algorithm that is easy to screw up. Dwifft has 100% test coverage on all of its core algorithms. Additionally, all of Dwifft's core functionality is tested with SwiftCheck, meaning it has been shown to behave correctly under an exhausting set of inputs and edge cases.
- Dwifft is fast - a lot of time has been spent making Dwifft considerably (many orders of magnitude) faster than a naïve implementation. It almost certainly won't be the bottleneck in your UI code.
- Dwifft is small - Dwifft believes (to the extent that a software library can "believe" in things) in the unix philosophy of small, easily-composed tools. It's unopinionated and flexible enough to fit into most apps, and leaves a lot of control in your hands as a developer. As such, you can probably cram it into your app in less than 5 minutes. Also, because it's small, it can actually achieve nice goals like 100% test and documentation coverage.
How to get started
- First, you should take a look at the example app, to get a feel for how Dwifft is meant to be used.
- Next, you should just sit down and read the entire documentation - it will take you <10 minutes, and you'll leave knowing everything there is to know about Dwifft.
- Then, install Dwifft via cocoapods or carthage or whatever people are using these days.
- Then get to Dwiffing.
Contributions are welcome, with some caveats - please read the contributing guidelines before opening a PR to avoid wasting both our time.
Ok, that's it, there's nothing more here.