Norwayrechsteiner/Parchment
A paging view with a highly customizable menu ✨
📜 Parchment — thư viện paging view với menu tùy biến 'không giới hạn' cho SwiftUI và UIKit
Paging view mà menu item muốn 'khác người' cỡ nào cũng được — vì toàn bộ menu chạy trên UICollectionView.
Parchment là thư viện Swift mã nguồn mở giúp tạo paging view (chuyển trang giữa các view controller) kèm menu indicator trượt mượt theo nội dung. Điểm đặc biệt: toàn bộ menu item được dựng bằng UICollectionView nên bạn có thể hiển thị gần như bất cứ thứ gì — chữ, icon, hình ảnh, animation — thậm chí subclass layout để tạo hành vi hoàn toàn riêng. Dự án hỗ trợ cả SwiftUI lẫn UIKit.
✨ Điểm nổi bật
- Tùy biến cực cao: menu items dựng bằng UICollectionView, có thể hiển thị mọi loại nội dung và subclass layout để tạo custom behavior riêng.
- Tiết kiệm bộ nhớ: view controllers chỉ được khởi tạo khi cần, không phải init toàn bộ danh sách lúc đầu.
- Infinite scrolling: vì view controllers được allocate khi scrolling, bạn có thể tạo data source vô hạn — rất phù hợp cho các ứng dụng kiểu lịch (calendar).
- SwiftUI thuận tiện: PageView + Page dựng nhanh với title và bất kỳ SwiftUI view nào làm content.
- Menu item là SwiftUI view: truyền view bất kỳ làm menu item, kèm state để đổi giao diện theo trạng thái chọn và scroll progress.
- Dynamic pages: truyền collection items vào PageView để tạo số trang động, hỗ trợ binding chọn item từ bên ngoài.
- Vô số modifiers: menuItemSize, menuBackgroundColor, menuPosition, indicatorOptions, borderOptions, contentNavigationOrientation... chỉnh giao diện không cần viết layout thủ công.
- UIKit đầy đủ: PagingViewController, data source, size delegate, reload data và toàn bộ tùy chọn customization.
💡 Vì sao đáng chú ý
Khác với nhiều thư viện paging chỉ làm được 'tab + nội dung trượt', Parchment đặt trọng tâm vào khả năng tùy biến menu. Việc dựng menu items bằng UICollectionView mở ra rất nhiều khả năng: icon xoay theo progress, menu item là hình ảnh, layout hoàn toàn riêng theo ý muốn... mà vẫn giữ được indicator trượt mượt theo nội dung.
Điểm cộng lớn thứ hai là cách quản lý bộ nhớ. Chỉ allocate view controller khi thật sự cần giúp Parchment xử lý tốt cả danh sách vô hạn — điều mà cách làm khởi tạo toàn bộ từ đầu không làm được. Nhờ vậy, dự án phù hợp cho cả app đơn giản lẫn use-case phức tạp như lịch cuộn nhiều chiều hay danh sách tab động.
#Swift #iOS #PagingView #OpenSource #TiniX
Similar Projects
Discover other similar projects and AI models.
📝 CodeEdit App for macOS – Elevate your code editing experience. Open source, free forever.
A curated list of awesome iOS ecosystem, including Objective-C and Swift Projects
Flutter makes it easy and fast to build beautiful apps for mobile and beyond
A lightweight, pure-Swift library for downloading and caching images from the web.