aunnnn / ProjectsViewElements is a framework to build UITableView with ease.
Nearly every iOS app has at least one UITableView. It displays a vertically scrollable list of elements called UITableViewCell. These cells are reused automatically as they move in and out of the screen, so displaying thousands of items is not a problem.
You can see this in most of Apple's built-in apps, like Settings.

However, we shouldn't stop here. See these pages:



They are just rows of elements stacking together:



It's clear now that UITableView can be used to build any kind of page in an app, not just table views. Another huge advantage is that the cells are reused automatically.
However, creating a table view is a repetitive and tiresome task. It relies on the data source concept, so the code for the presentation layer ends up split across multiple functions (e.g., cellForRowAtIndexPath, heightForRowAtIndexPath, estimatedHeightForRowAtIndexPath). This makes the code harder to work with as it grows.
ViewElements simplifies the process of building a UITableView and reusing UITableViewCell. It lets developers declare arrays of rows so that the final appearance and order of the rows directly mirror the code. This keeps all the code for each row close together, making it easier to work with.

It also provides an API called Component for building a view by nesting UIStackViews together. This combines UITableView and UIStackView: the table view handles displaying and reusing cells vertically, while the stack view handles the UI inside each cell.
ViewElements wraps these complexities in data structures and provides APIs to construct a complete view. Once a view is set up, it can be reused anywhere through the provided API, and the built-in elements can already do a lot on their own!
Check this quick demo:

This is a great solution for static pages in an app. However, dynamic pages and pages that interact with data, such as form inputs, need more than this.
I'm currently combining a reactive programming library called RxSwift with ViewElements to enable data-driven UI.
Check out the experimental repo here.