iOS / Swift image slideshow with circular scrolling, timer and full screen viewer.
To run the example project, clone the repo, and run pod install
from the Example directory first.
Version 1.0-beta.1 supports Swift 3. For Swift 2.2 and Swift 2.3 compatible code use version 0.6 or branch swift-2.3.
ImageSlideshow is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'ImageSlideshow', '~> 1.0.0-beta.1'
To integrate ImageSlideshow into your Xcode project using Carthage, specify it in your Cartfile:
github "zvonicek/ImageSlideshow" "1.0.0-beta.1"
You can instantiate Slideshow either in Storyboard / Interface Builder, or in code.
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:
pod "ImageSlideshow/Alamofire"
Used by creating a new AlamofireSource
instance:
AlamofireSource(urlString: "https://images.unsplash.com/photo-1432679963831-2dab49187847?w=1080")
pod "ImageSlideshow/AFURL"
Used by creating a new AFURLSource
instance:
AFURLSource(urlString: "https://images.unsplash.com/photo-1432679963831-2dab49187847?w=1080")
pod "ImageSlideshow/SDWebImage"
Used by creating a new SDWebImageSource
instance:
SDWebImageSource(urlString: "https://images.unsplash.com/photo-1432679963831-2dab49187847?w=1080")
pod "ImageSlideshow/Kingfisher"
Used by creating a new KingfisherSource
instance:
KingfisherSource(urlString: "https://images.unsplash.com/photo-1432679963831-2dab49187847?w=1080")
Behaviour is configurable by those properties:
slideshowInterval
- in case you want automatic slideshow, set up the interval between sliding to next picturezoomEnabled
- enables zoomingcircular
- enables circular scrollingpageControlPosition
- configures position of UIPageControll (hidden, inside scroll view or under scroll view)contentScaleMode
- configures the scaling (UIViewContentMode.ScaleAspectFit by default)draggingEnabled
- enables draggingcurrentPageChanged
- closure called on page changepreload
- image preloading configuration (all images are preloaded by default)
There is also a possibility to open full-screen image view using attached FullScreenSlideshowViewController
. The simplest way is to call:
override func viewDidLoad() {
let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.didTap))
slideshow.addGestureRecognizer(gestureRecognizer)
}
func didTap() {
slideshow.presentFullScreenController(from: self)
}
FullScreenSlideshowViewController
can also be instantiated and configured manually if more advanced behavior is needed.
Petr Zvoníček
ImageSlideshow is available under the MIT license. See the LICENSE file for more info.
Inspired by projects: