{"id":21065047,"url":"https://github.com/prolificinteractive/optik","last_synced_at":"2025-05-16T02:33:00.666Z","repository":{"id":8753579,"uuid":"58809515","full_name":"prolificinteractive/Optik","owner":"prolificinteractive","description":"A Swift library for displaying images from any source, local or remote.","archived":false,"fork":false,"pushed_at":"2019-10-16T23:04:18.000Z","size":12937,"stargazers_count":25,"open_issues_count":6,"forks_count":15,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-04-19T07:11:21.404Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prolificinteractive.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-05-14T13:34:47.000Z","updated_at":"2023-01-17T01:39:14.000Z","dependencies_parsed_at":"2022-08-07T04:16:45.229Z","dependency_job_id":null,"html_url":"https://github.com/prolificinteractive/Optik","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prolificinteractive%2FOptik","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prolificinteractive%2FOptik/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prolificinteractive%2FOptik/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prolificinteractive%2FOptik/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prolificinteractive","download_url":"https://codeload.github.com/prolificinteractive/Optik/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254456224,"owners_count":22074130,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T17:53:17.502Z","updated_at":"2025-05-16T02:32:55.653Z","avatar_url":"https://github.com/prolificinteractive.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Optik](Images/Optik_Banner.jpg)\n\n[![Travis build status](https://img.shields.io/travis/prolificinteractive/Optik.svg?style=flat-square)](https://travis-ci.org/prolificinteractive/Optik)\n[![Cocoapods Compatible](https://img.shields.io/cocoapods/v/Optik.svg?style=flat-square)](https://img.shields.io/cocoapods/v/Optik.svg)\n[![Platform](https://img.shields.io/cocoapods/p/Optik.svg?style=flat-square)](http://cocoadocs.org/docsets/Optik)\n[![Docs](https://img.shields.io/cocoapods/metrics/doc-percent/Optik.svg?style=flat-square)](http://cocoadocs.org/docsets/Optik)\n\n## Description\n\nOptik provides a simple viewing experience for a set of images, whether stored locally or remotely.\n\n\u003cimg src=\"https://github.com/prolificinteractive/Optik/blob/master/Images/Optik_Example.gif\" width=\"320px\" height=\"568px\" /\u003e\n\n## Requirements\n\n* iOS 9.0+\n* Xcode 8.1 or later\n\n## Installation\n\nOptik is available through [CocoaPods](http://cocoapods.org). To install it, simply add the following line to your `Podfile`:\n\n```ruby\npod \"Optik\"\n```\n\n## Usage\n\nOptik can be used to display images stored either locally or remotely.\n\n### Displaying Images\n\n#### Local Images\n\nLocal images can be displayed by creating an image viewer with an array of images:\n\n```swift\nlet imageViewer = Optik.imageViewer(\n    withImages: [\n\t\tUIImage(named: \"image1.jpg\")!,\n\t\tUIImage(named: \"image2.jpg\")!,\n\t\tUIImage(named: \"image3.jpg\")!\n    ]\n)\n\npresentViewController(imageViewer, animated: true, completion: nil)\n```\n\n#### Remote Images\n\nFor remote images, an array of `NSURLs` should be provided - as well as an object conforming to the `ImageDownloader` protocol:\n\n```swift\nlet imageDownloader = MyImageDownloader()\n\nlet imageViewer = Optik.imageViewer(\n    withURLs: [\n        NSURL(string: \"https://somewebsite.com/image1.png\")!,\n        NSURL(string: \"https://somewebsite.com/image2.png\")!,\n        NSURL(string: \"https://somewebsite.com/image3.png\")!\n    ],\n    imageDownloader: imageDownloader\n)\n\npresentViewController(imageViewer, animated: true, completion: nil)\n```\n\n### Customizing the Image Viewer\n\n#### Dismiss Button\n\nThe dismiss button image and position can be customized.\n\nTo indicate a custom dismiss button image, provide a `dismissButtonImage` parameter when creating an image viewer:\n\n```swift\nlet imageViewer = Optik.imageViewer(\n    withImages: [\n        UIImage(named: \"image1.jpg\")!\n    ],\n    dismissButtonImage: UIImage(named: \"MyDismissButton\")\n)\n```\n\nTo indicate a position for the dismiss button, provide a `dismissButtonPosition`\n\n```swift\nlet imageViewer = Optik.imageViewer(\n    withImages: [\n        UIImage(named: \"image1.jpg\")!\n    ],\n    dismissButtonImage: UIImage(named: \"MyDismissButton\"),\n    dismissButtonPosition: .TopTrailing\n)\n```\n\n#### Activity Indicator\n\nWhen fetching remote images, an activity indicator is displayed while images are loaded. To indicate a custom activity indicator color, provide an `activityIndicatorColor:` parameter when creating an image viewer:\n\n```swift\nlet imageViewer = Optik.imageViewer(\n    withURLs: [\n    \tNSURL(string: \"https://somewebsite.com/image1.png\")!\n    ],\n    imageDownloader: imageDownloader,\n    activityIndicatorColor: UIColor.redColor()\n)\n```\n\n## Contributing to Optik\n\nTo report a bug or enhancement request, feel free to file an issue under the respective heading.\n\nIf you wish to contribute to the project, fork this repo and submit a pull request. Code contributions should follow the standards specified in the [Prolific Swift Style Guide](https://github.com/prolificinteractive/swift-style-guide).\n\n## License\n\n![prolific](https://s3.amazonaws.com/prolificsitestaging/logos/Prolific_Logo_Full_Color.png)\n\nCopyright (c) 2017 Prolific Interactive\n\nMarker is maintained and sponsored by Prolific Interactive. It may be redistributed under the terms specified in the [LICENSE] file.\n\n[LICENSE]: ./LICENSE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprolificinteractive%2Foptik","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprolificinteractive%2Foptik","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprolificinteractive%2Foptik/lists"}