About this project

JXPhotoBrowser is a media browsing UI component for iOS applications, built on UIKit and UICollectionView, requiring iOS 12.0+ and Swift 5.4+, with integration into SwiftUI via a bridging layer. The component does not bind to business data models or include a built-in image-loading library; instead, the delegate provides the item count, retrieval, and cell configuration, while actual image loading is handled by a library chosen by the integrator. In terms of interaction and display, it supports horizontal or vertical full-page browsing, infinite looping, programmatic page jumps, configurable page spacing, and auto-carousel. Images can be zoomed via double-tap or pinch, with the double-tap zoom scale being configurable. Dismissal supports a pull-down gesture, and transitions can be selected as Zoom, Fade, or None, with an optional thumbnail view for zoom transitions. Pull-to-dismiss is not enabled in vertical scrolling mode. Extension mechanisms include custom Cells and Overlays; the README examples use JXZoomImageCell and JXPageIndicatorOverlay. Besides modal presentation, the browser can be embedded as an inline banner using standard View Controller containment, where transitions and pull-down gestures are typically disabled and auto-play is configured. After data changes, the component's reloadData entry point should be called rather than directly manipulating the internal collectionView. Installation supports CocoaPods, SwiftPM, and Carthage; the integration package includes a PrivacyInfo.xcprivacy, and the README states the component does not track users, collect data, or use Required Reason APIs. Known limitations include fixed portrait orientation, no device rotation support, and each cell being fixed to the browser's full-page size; since version 4.1, per-item custom sizing is no longer supported. The project is licensed under the MIT License.