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
To start your slideshow just instantiate LightboxController, set needed
delegates and present it:
// Create an array of images.
letimages=[LightboxImage(imageURL:URL(string:"https://cdn.arstechnica.net/2011/10/05/iphone4s_sample_apple-4e8c706-intro.jpg")!),LightboxImage(
image:UIImage(named:"photo1")!,
text:"This is an example of a remote image loaded from URL"),LightboxImage(
image:UIImage(named:"photo2")!,
text:"",
videoURL:URL(string:"https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")),LightboxImage(
image:UIImage(named:"photo3")!,
text:"This is an example of a local image.")]
// Create an instance of LightboxController.
letcontroller=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.
extensionViewController:LightboxControllerPageDelegate{func lightboxController(_ controller:LightboxController, didMoveToPage page:Int){print(page)}}Use LightboxControllerDismissalDelegate to be notified when controller is
about to be dismissed. Please note that LightboxController dismisses itself
if it was presented initially.
extensionViewController:LightboxControllerDismissalDelegate:class{func lightboxControllerWillDismiss(_ controller:LightboxController){
// ...
}}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:
LightboxImage(
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
letvideoController=AVPlayerViewController()
videoController.player =AVPlayer(url: videoURL)
from.present(videoController, animated:true){
videoController.player?.play()}}Configure text, colors, fonts of UI elements by overriding the static variables in the Lightboxconfiguration 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, ios@hyper.no
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.


