airbnb/magazinelayout

A collection view layout capable of laying out views in vertically scrolling grids and lists.

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 23 minutes ago
Added to GitGenius on September 20th, 2026
Created on November 16th, 2018
Open Issues & Pull Requests: 14 (+0)
GitHub issues: Enabled
Number of forks: 222
Total Stargazers: 3,378 (+0)
Total Subscribers: 57 (+0)

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 2
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 410 days
Stale 30+ days: 2
Stale 90+ days: 2

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

MagazineLayout is a UICollectionViewLayout subclass for laying out vertically scrolling grids and lists in iOS applications.

The tool solves the limitations of UICollectionViewFlowLayout by enabling flexible item sizing and layout configurations. It allows items to be sized as fractions of available width—full width for list layouts, half-width or third-width for grids—while supporting self-sizing in the vertical dimension alone. Individual items can mix self-sizing and static sizing within the same collection view. Headers, footers, and section backgrounds can be independently shown, hidden, or pinned. The layout also supports customizable spacing, insets, and insert/delete animations per section.

Developers building iOS apps with complex collection view layouts should consider this tool, particularly when designing screens that combine list and grid presentations or require fine-grained control over item sizing and spacing. The tool has been used to build high-traffic screens in the Airbnb app, including search results, wish lists, and detail pages. It suits projects where UICollectionViewFlowLayout's constraints prove limiting but a full custom layout implementation would be excessive.

The project maintains an example app demonstrating its capabilities with pre-populated content and the ability to reset to a blank state. The codebase is structured around a workspace that includes the framework and example application, with clear separation between the layout implementation and demonstration code.