ImageSlideshow 0 travis-ci CocoaPods

Swift image slideshow with circular scrolling, timer and full screen viewer

3 years after MIT

ImageSlideshow

Build Status Version Carthage Compatible License Platform

ImageSlideshow

iOS / Swift image slideshow with circular scrolling, timer and full screen viewer.

This component is under development. Description and brief documentation will follow with future versions. The API will be subject of change.

Roadmap for 1.0:

  • Create test project
  • Create CocoaPod
  • Fix initial bugs
  • Polish API
  • Improve documentation
  • Improve the example project to demonstrate all the features
  • InputSource subclass for Alamofire (yay!)

Usage

To run the example project, clone the repo, and run pod install from the Example directory first.

Swift 2.3 and Swift 3 support

Version 0.6 supports both Swift 2.2 and Swift 2.3. Code fully compatible with Swift 3 can be found in branch swift-3 and will be oficially released in a future update.

Installation

CocoaPods

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

pod 'ImageSlideshow', '~> 0.6'

Carthage

To integrate ImageSlideshow into your Xcode project using Carthage, specify it in your Cartfile:

github "zvonicek/ImageSlideshow" ~> 0.6

Usage

You can instantiate Slideshow either in Storyboard / Interface Builder, or in code.

Loading images

Images can be set by calling setImageInputs method on ImageSlideshow instance. Argument is an array of InputSources. By default you may use ImageSource which takes UIImage, but you can easily subclass InputSource and support your own input source.

slideshow.setImageInputs([
  ImageSource(image: UIImage(named: "myImage"))!, 
  ImageSource(image: UIImage(named: "myImage2"))!
])

There are three more InputSources available:

AlamofireImage

pod "ImageSlideshow/Alamofire"

Used by creating a new AlamofireSource instance:

AlamofireSource(urlString: "https://images.unsplash.com/photo-1432679963831-2dab49187847?w=1080")

AFNetworking

pod "ImageSlideshow/AFURL"

Used by creating a new AFURLSource instance:

AFURLSource(urlString: "https://images.unsplash.com/photo-1432679963831-2dab49187847?w=1080")

SDWebImage

pod "ImageSlideshow/SDWebImage"

Kingfisher

pod "ImageSlideshow/Kingfisher"

Used by creating a new KingfisherSource instance:

KingfisherSource(urlString: "https://images.unsplash.com/photo-1432679963831-2dab49187847?w=1080")

Configuration

Behaviour is configurable by those properties:

  • slideshowInterval - in case you want automatic slideshow, set up the interval between sliding to next picture
  • zoomEnabled - enables zooming
  • circular - enables circular scrolling
  • pageControlPosition - configures position of UIPageControll (hidden, inside scroll view or under scroll view)
  • contentScaleMode - configures the scaling (UIViewContentMode.ScaleAspectFit by default)
  • draggingEnabled - enables dragging

Full Screen view

There is also a possibility to open full-screen image view using attached FullScreenSlideshowViewController. The controller is meant to be presented manually, as seen on the example:

var slideshowTransitioningDelegate: ZoomAnimatedTransitioningDelegate?

override func viewDidLoad() {
  ...
  let gestureRecognizer = UITapGestureRecognizer(target: self, action: "openFullScreen")
  slideshow.addGestureRecognizer(gestureRecognizer)
}

func click() {
  let ctr = FullScreenSlideshowViewController()
  // called when full-screen VC dismissed and used to set the page to our original slideshow
  ctr.pageSelected = { page in
    self.slideshow.setScrollViewPage(page, animated: false)
  }

  // set the initial page
  ctr.initialImageIndex = slideshow.scrollViewPage
  // set the inputs
  ctr.inputs = slideshow.images
  self.slideshowTransitioningDelegate = ZoomAnimatedTransitioningDelegate(slideshowView: slideshow, slideshowController: ctr)
  ctr.transitioningDelegate = self.slideshowTransitioningDelegate
  self.presentViewController(ctr, animated: true, completion: nil)
}

Author

Petr Zvoníček

License

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

References

Inspired by projects:

Related Repositories

KIImagePager

KIImagePager

The KIImagePager is inspired by foursquare's ImageSlideshow, the user may scroll ...

Auk

Auk

An image slideshow for iOS written in Swift. ...

refinerycms-image-slideshows

refinerycms-image-slideshows

Image Slideshows engine for Refinery CMS ...

matryoshka

matryoshka

A GUI for nesting and linking objects inside other objects. ...

refinerycms-image-slideshows

refinerycms-image-slideshows

Image Slideshows engine for Refinery CMS ...


Top Contributors

zvonicek kafejo colemancda NikKovV bodagetta feiin

Releases

-   0.6 zip tar
-   0.5.1 zip tar
-   0.5.0 zip tar
-   0.4.0 zip tar
-   0.3.1 zip tar
-   0.3 zip tar
-   0.2.3 zip tar
-   0.2.2 zip tar
-   0.2.1 zip tar
-   0.2.0 zip tar
-   0.1.0 zip tar
-   0.0.1 zip tar