Swiftpack.co - hyperoslo/Lightbox as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by hyperoslo.
hyperoslo/Lightbox 2.5.1
:milky_way: A convenient and easy to use image viewer for your iOS app
⭐️ 1,597
🕓 2 weeks ago
.package(url: "https://github.com/hyperoslo/Lightbox.git", from: "2.5.1")


CI Status Carthage Compatible License Platform Swift

Lightbox Icon

Lightbox is a convenient and easy to use image viewer for your iOS app, packed with all the features you expect:

  • ☑ Paginated image slideshow.
  • ☑ Video support.
  • ☑ Double-tap to zoom.
  • ☑ Image caption.
  • ☑ Dynamic background based on Hue
  • ☑ Remote image loading and caching based on Imaginary
  • ☑ Interactive transition animations.
  • ☑ Powerful configuration.
  • Live Demo

Table of Contents



To start your slideshow just instantiate LightboxController, set needed delegates and present it:

// Create an array of images.
let images = [
  LightboxImage(imageURL: URL(string: "https://cdn.arstechnica.net/2011/10/05/iphone4s_sample_apple-4e8c706-intro.jpg")!),
    image: UIImage(named: "photo1")!,
    text: "This is an example of a remote image loaded from URL"
    image: UIImage(named: "photo2")!,
    text: "",
    videoURL: URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
    image: UIImage(named: "photo3")!,
    text: "This is an example of a local image."

// Create an instance of LightboxController.
let controller = LightboxController(images: images)

// Set delegates.
controller.pageDelegate = self
controller.dismissalDelegate = self

// Use dynamic background.
controller.dynamicBackground = true

// Present your controller.
present(controller, animated: true, completion: nil)


Use LightboxControllerPageDelegate if you want to be notified about page navigation changes.

extension ViewController: LightboxControllerPageDelegate {

  func lightboxController(_ controller: LightboxController, didMoveToPage page: Int) {

Use LightboxControllerDismissalDelegate to be notified when controller is about to be dismissed. Please note that LightboxController dismisses itself if it was presented initially.

extension ViewController: LightboxControllerDismissalDelegate: class {

  func lightboxControllerWillDismiss(_ controller: LightboxController) {
    // ...

Image loading

By default images are loaded using Imaginary for reliable loading and caching. But it's easy to change this behavior using LightboxConfig

LightboxConfig.loadImage = {
  imageView, URL, completion in
  // Custom image loading


Lightbox can show and plays video using default AVPlayerViewController. Showning video by using videoURL:

  image: UIImage(named: "photo2")!,
  text: "",
  videoURL: NSURL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")

Override video handling if needed:

LightboxConfig.handleVideo = { from, videoURL in
  // Custom video handling
  let videoController = AVPlayerViewController()
  videoController.player = AVPlayer(url: videoURL)

  from.present(videoController, animated: true) {


Configure text, colors, fonts of UI elements by overriding the static variables in the Lightbox configuration struct. As an example:

LightboxConfig.CloseButton.image = UIImage(named: ImageList.Lightbox.closeButton)
LightboxConfig.CloseButton.textAttributes = TextAttributes.Lightbox.closeButton
LightboxConfig.CloseButton.text = "Finish"

LightboxConfig.DeleteButton.image = UIImage(named: ImageList.Lightbox.deleteButton)
LightboxConfig.DeleteButton.textAttributes = TextAttributes.Lightbox.deleteButton
LightboxConfig.DeleteButton.text = "Delete"

LightboxConfig.InfoLabel.ellipsisText = "Show more"


Lightbox is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'Lightbox'

In order to quickly try the demo project of a Lightbox just run pod try Lightbox in your terminal.

Lightbox is also available through Carthage. To install just write into your Cartfile:

github "hyperoslo/Lightbox"

To install Lightbox manually just download and drop Sources and Images folders in your project.


Hyper Interaktiv AS, [email protected]


We would love you to contribute to Lightbox, check the CONTRIBUTING file for more info.


Lightbox is available under the MIT license. See the LICENSE file for more info.


Stars: 1597
Last commit: 2 weeks ago
Advertisement: IndiePitcher.com - Cold Email Software for Startups

Release Notes

2 weeks ago

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics