Skip to content

Commit 7957252

Browse files
committed
Add Image Slideshow delegate
1 parent 782eb7c commit 7957252

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

Example/ImageSlideshow/ViewController.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,7 @@ class ViewController: UIViewController {
3737

3838
// optional way to show activity indicator during image load (skipping the line will show no activity indicator)
3939
slideshow.activityIndicator = DefaultActivityIndicator()
40-
slideshow.currentPageChanged = { page in
41-
print("current page:", page)
42-
}
40+
slideshow.delegate = self
4341

4442
// can be used with other sample sources as `afNetworkingSource`, `alamofireSource` or `sdWebImageSource` or `kingfisherSource`
4543
slideshow.setImageInputs(localSource)
@@ -52,5 +50,8 @@ class ViewController: UIViewController {
5250
let fullScreenController = slideshow.presentFullScreenController(from: self)
5351
// set the activity indicator for full screen controller (skipping the line will show no activity indicator)
5452
fullScreenController.slideshow.activityIndicator = DefaultActivityIndicator(style: .white, color: nil)
53+
extension ViewController: ImageSlideshowDelegate {
54+
func imageSlideshow(_ imageSlideshow: ImageSlideshow, didChangeCurrentPageTo page: Int) {
55+
print("current page:", page)
5556
}
5657
}

ImageSlideshow/Classes/Core/ImageSlideshow.swift

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,27 @@
77

88
import UIKit
99

10+
@objc
11+
/// The delegate protocol informing about image slideshow state changes
12+
public protocol ImageSlideshowDelegate: class {
13+
/// Tells the delegate that the current page has changed
14+
///
15+
/// - Parameters:
16+
/// - imageSlideshow: image slideshow instance
17+
/// - page: new page
18+
@objc optional func imageSlideshow(_ imageSlideshow: ImageSlideshow, didChangeCurrentPageTo page: Int)
19+
20+
/// Tells the delegate that the slideshow will begin dragging
21+
///
22+
/// - Parameter imageSlideshow: image slideshow instance
23+
@objc optional func imageSlideshowWillBeginDragging(_ imageSlideshow: ImageSlideshow)
24+
25+
/// Tells the delegate that the slideshow did end decelerating
26+
///
27+
/// - Parameter imageSlideshow: image slideshow instance
28+
@objc optional func imageSlideshowDidEndDecelerating(_ imageSlideshow: ImageSlideshow)
29+
}
30+
1031
/**
1132
Used to represent position of the Page Control
1233
- hidden: Page Control is hidden
@@ -94,10 +115,14 @@ open class ImageSlideshow: UIView {
94115
didSet {
95116
if oldValue != currentPage {
96117
currentPageChanged?(currentPage)
118+
delegate?.imageSlideshow?(self, didChangeCurrentPageTo: currentPage)
97119
}
98120
}
99121
}
100122

123+
/// Delegate called on image slideshow state change
124+
open weak var delegate: ImageSlideshowDelegate?
125+
101126
/// Called on each currentPage change
102127
open var currentPageChanged: ((_ page: Int) -> ())?
103128

@@ -494,11 +519,13 @@ extension ImageSlideshow: UIScrollViewDelegate {
494519

495520
setTimerIfNeeded()
496521
willBeginDragging?()
522+
delegate?.imageSlideshowWillBeginDragging?(self)
497523
}
498524

499525
open func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
500526
setCurrentPageForScrollViewPage(primaryVisiblePage)
501527
didEndDecelerating?()
528+
delegate?.imageSlideshowDidEndDecelerating?(self)
502529
}
503530

504531
open func scrollViewDidScroll(_ scrollView: UIScrollView) {

0 commit comments

Comments
 (0)