Giter VIP home page Giter VIP logo

imageslideshow's Introduction

ImageSlideshow

Version 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
  • Write brief 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.

Requirements

Installation

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

pod 'ImageSlideshow', '~> 0.5'

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 two more InputSources available:

AlamofireImage

AlamofireSource subspec for loading image from an URL via AlamofireImage. To use this add the Alamofire subspec to your Podfile.

pod "ImageSlideshow/Alamofire"

An image from arbitrary URL is then loaded by AlamofireSource initialization.

AlamofireSource(urlString: "https://upload.wikimedia.org/wikipedia/commons/d/d5/Trencin_hdr_001.jpg")

AFNetworking

AFURL subspec for loading image from an URL via AFNetworking. To use this add the AFURL subspec to your Podfile.

pod "ImageSlideshow/AFURL"

An image from arbitrary URL is then loaded by AFURLSource initialization.

AFURLSource(urlString: "https://upload.wikimedia.org/wikipedia/commons/d/d5/Trencin_hdr_001.jpg")

Configuration

It is possible to configure behaviour by setting numerous 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

As seen on sample image and example project, you may also use full-scren view. The controller can be presented manually as seen on the example.

var transitionDelegate: 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: Int) in
    self.slideshow.setScrollViewPage(page, animated: false)
  }
  
  // set the initial page
  ctr.initialPage = slideshow.scrollViewPage
  // set the inputs
  ctr.inputs = slideshow.images
  self.transitionDelegate = ZoomAnimatedTransitioningDelegate(slideshowView: slideshow, slideshowController: ctr)
  ctr.transitioningDelegate = self.transitionDelegate
  self.presentViewController(ctr, animated: true, completion: nil)
}

Author

Petr Zvoníček, [email protected]

License

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

References

Inspired by projects:

imageslideshow's People

Contributors

zvonicek avatar bodagetta avatar

Watchers

James Cloos avatar James Yenne avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.