Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/justinvallely/SwiftPhotoGallery
iOS photo gallery written in Swift
https://github.com/justinvallely/SwiftPhotoGallery
Last synced: 6 days ago
JSON representation
iOS photo gallery written in Swift
- Host: GitHub
- URL: https://github.com/justinvallely/SwiftPhotoGallery
- Owner: justinvallely
- License: apache-2.0
- Created: 2015-09-10T22:12:20.000Z (over 9 years ago)
- Default Branch: develop
- Last Pushed: 2022-06-19T15:15:16.000Z (over 2 years ago)
- Last Synced: 2024-11-28T11:40:40.960Z (14 days ago)
- Language: Swift
- Size: 23.5 MB
- Stars: 284
- Watchers: 16
- Forks: 53
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ios - SwiftPhotoGallery - Simple, fullscreen image gallery with tap, swipe, and pinch gestures. (Media / Image)
- awesome-ios-star - SwiftPhotoGallery - Simple, fullscreen image gallery with tap, swipe, and pinch gestures. (Media / Image)
README
# SwiftPhotoGallery
[![Platform](https://img.shields.io/badge/platform-iOS%20%7C%20tvOS-blue.svg?style=flat)](http://cocoapods.org/pods/SwiftPhotoGallery)
[![Version](https://img.shields.io/cocoapods/v/SwiftPhotoGallery.svg?style=flat)](http://cocoapods.org/pods/SwiftPhotoGallery)
[![License](https://img.shields.io/cocoapods/l/SwiftPhotoGallery.svg?style=flat)](http://cocoapods.org/pods/SwiftPhotoGallery)
[![CocoaPods](https://img.shields.io/cocoapods/dt/SwiftPhotoGallery.svg?style=flat)](https://cocoapods.org/pods/SwiftPhotoGallery)
![tests](https://img.shields.io/badge/tests-passing-brightgreen.svg)
![Swift](https://img.shields.io/badge/Swift-5.0-orange.svg)
![Dependencies](https://img.shields.io/badge/dependencies-none-lightgrey.svg?style=flat)## Overview
A full screen photo gallery for iOS and tvOS written in Swift.
- Photos can be panned and zoomed (iOS only)
- Pinch to zoom (iOS only)
- Double tap to zoom all the way in and again to zoom all the way out (iOS only)
- Single tap to close
- Twitter style swipe to close (iOS only)
- Includes a customizable page indicator
- Support for any orientation (iOS only)
- Supports images of varying sizes
- Includes unit tests
- Customize nearly all UI aspects
- Integrates seamlessly with [SDWebImage](https://cocoapods.org/pods/SDWebImage)## Usage
To run the example project, clone the repo, and run `pod install` from the Example directory.
## Requirements
- iOS 9.0+
- tvOS 10.0+
- Xcode 10.2.1+
- Swift 5.0+## Communication
- If you **need help**, use [Stack Overflow](https://stackoverflow.com/questions/tagged/swiftphotogallery). (Tag 'swiftphotogallery')
- If you'd like to **ask a general question**, use [Stack Overflow](https://stackoverflow.com/questions/tagged/swiftphotogallery).
- If you **found a bug**, open an issue.
- If you **have a feature request**, open an issue.
- If you **want to contribute**, submit a pull request.## Installation
SwiftPhotoGallery is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:```swift
pod 'SwiftPhotoGallery'
```## Implementation
* **Import the framework in your view controller**
```swift
import SwiftPhotoGallery
```* **Create an instance**
```swift
let gallery = SwiftPhotoGallery(delegate: self, dataSource: self)
```* **Customize the look**
```swift
gallery.backgroundColor = UIColor.black
gallery.pageIndicatorTintColor = UIColor.gray.withAlphaComponent(0.5)
gallery.currentPageIndicatorTintColor = UIColor.white
gallery.hidePageControl = false
```* **Implement the datasource**
```swift
let imageNames = ["image1.jpeg", "image2.jpeg", "image3.jpeg"]func numberOfImagesInGallery(gallery: SwiftPhotoGallery) -> Int {
return imageNames.count
}func imageInGallery(gallery: SwiftPhotoGallery, forIndex: Int) -> UIImage? {
return UIImage(named: imageNames[forIndex])
}
```* **Implement the delegate**
```swift
func galleryDidTapToClose(gallery: SwiftPhotoGallery) {
// do something cool like:
dismiss(animated: true, completion: nil)
}
```* **Present the gallery**
```swift
present(gallery, animated: true, completion: nil)
```## Full Example
```swift
class ViewController: UIViewController, SwiftPhotoGalleryDataSource, SwiftPhotoGalleryDelegate {let imageNames = ["image1.jpeg", "image2.jpeg", "image3.jpeg"]
var index: Int = 2override func viewDidLoad() {
super.viewDidLoad()
}@IBAction func didPressShowMeButton(sender: AnyObject) {
let gallery = SwiftPhotoGallery(delegate: self, dataSource: self)gallery.backgroundColor = UIColor.black
gallery.pageIndicatorTintColor = UIColor.gray.withAlphaComponent(0.5)
gallery.currentPageIndicatorTintColor = UIColor.white
gallery.hidePageControl = falsepresent(gallery, animated: true, completion: nil)
/*
/// Or load on a specific page like this:present(gallery, animated: true, completion: { () -> Void in
gallery.currentPage = self.index
})
*/}
// MARK: SwiftPhotoGalleryDataSource Methods
func numberOfImagesInGallery(gallery: SwiftPhotoGallery) -> Int {
return imageNames.count
}func imageInGallery(gallery: SwiftPhotoGallery, forIndex: Int) -> UIImage? {
return UIImage(named: imageNames[forIndex])
}// MARK: SwiftPhotoGalleryDelegate Methods
func galleryDidTapToClose(gallery: SwiftPhotoGallery) {
dismiss(animated: true, completion: nil)
}
}
```## Author
Justin Vallely, [email protected]
## License
SwiftPhotoGallery is available under the Apache License 2.0. See the LICENSE file for more info.