Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nytimes/NYTPhotoViewer
A modern photo viewing experience for iOS.
https://github.com/nytimes/NYTPhotoViewer
Last synced: 20 days ago
JSON representation
A modern photo viewing experience for iOS.
- Host: GitHub
- URL: https://github.com/nytimes/NYTPhotoViewer
- Owner: nytimes
- License: other
- Created: 2015-02-11T11:50:50.000Z (almost 10 years ago)
- Default Branch: develop
- Last Pushed: 2024-02-26T17:19:45.000Z (9 months ago)
- Last Synced: 2024-05-18T06:01:30.076Z (6 months ago)
- Language: Objective-C
- Homepage: http://open.blogs.nytimes.com/2015/03/27/a-new-view-for-nytimes-photos/
- Size: 40.1 MB
- Stars: 2,846
- Watchers: 106
- Forks: 375
- Open Issues: 79
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# NYTPhotoViewer
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
NYTPhotoViewer is a slideshow and image viewer that includes double-tap to zoom, captions, support for multiple images, interactive flick to dismiss, animated zooming presentation, and more.
![Demo GIF](Documentation/photo_viewer.gif)
## Usage
Usage is simple, with the option for more complicated customization when needed through a delegate relationship. In the most basic implementation, just initialize the view controller with an array of photo objects and present it as normal:
```objc
NYTPhotosViewController *photosViewController = [[NYTPhotosViewController alloc] initWithPhotos:photos];
[self presentViewController:photosViewController animated:YES completion:nil];
```## Running the Example
Clone this locally, then in your local workspace of the `NYTPhotoViewer` repo, run `./scripts/bootstrap`, then open Examples/NYTPhotoViewer.xcworkspace. You'll see targets for a Swift and Objective-C app.
## Installation
### Swift Package Manager
NYTPhotoViewer may be installed via SPM, by pointing at this repo's URL.
### Cocoapods
NYTPhotoViewer is available through [CocoaPods](http://cocoapods.org). To install it, simply add the following line to your `Podfile`:
```ruby
pod 'NYTPhotoViewer'
```### Carthage
NYTPhotoViewer may be installed via [Carthage](https://github.com/Carthage/Carthage). To install it, simply add the following line to your `Cartfile`:
```
github "NYTimes/NYTPhotoViewer"
```Then, following the instructions for [integrating Carthage frameworks into your app](https://github.com/Carthage/Carthage#if-youre-building-for-ios-tvos-or-watchos), link the `NYTPhotoViewer` and `PINRemoteImage` frameworks into your project.
If you don't want support for animated GIFs, you may instead link against only the `NYTPhotoViewerCore` framework.
## Requirements
This library requires a deployment target of iOS 9.0 or greater.
## Changelog
See [`CHANGELOG.md`](https://github.com/NYTimes/NYTPhotoViewer/blob/develop/CHANGELOG.md).
## Contributing
Please **open pull requests against the `develop` branch**, and add a relevant note to the [`develop` section of the CHANGELOG](https://github.com/NYTimes/NYTPhotoViewer/blob/develop/CHANGELOG.md#develop) as part of your pull request.
## Swift
NYTPhotoViewer is written in Objective-C but is fully interoperable with Swift. If you experience any interoperability difficulties, please open an issue or pull request and we will work to resolve it.
## Inspiration
NYTPhotoViewer draws feature inspiration from Facebook and Tweetbot’s image viewers. If this implementation isn’t to your liking, you may consider [JTSImageViewController](https://github.com/jaredsinclair/JTSImageViewController) or [IDMPhotoBrowser](https://github.com/ideaismobile/IDMPhotoBrowser).
## Implementation
NYTPhotoViewer has a straightforward implementation using standard UIKit components. The viewer is a `UIViewController` and uses `UIViewController` transitioning APIs for the animated and interactive transitions, a `UIPageViewController` for horizontal swiping between images, and `UIScrollView` for image zooming.
It is intended to be used without the need for subclassing, and as such it accepts model objects conforming to a `NYTPhoto` protocol and provides ample opportunity for customization via the `NYTPhotosViewControllerDelegate`. Since standard APIs are used, the client has full control over the transitions and customization of the `NYTPhotosViewController`.
## License
NYTPhotoViewer is available under the Apache 2.0 license. See [`LICENSE.md`](https://github.com/NYTimes/NYTPhotoViewer/blob/develop/LICENSE.md) for more information.
## Contributors
[A list of contributors is available through GitHub.](https://github.com/NYTimes/NYTPhotoViewer/graphs/contributors)