diff --git a/SKPhotoBrowser/SKPagingScrollView.swift b/SKPhotoBrowser/SKPagingScrollView.swift index 3332f4d9..9bcf5684 100644 --- a/SKPhotoBrowser/SKPagingScrollView.swift +++ b/SKPhotoBrowser/SKPagingScrollView.swift @@ -44,26 +44,24 @@ class SKPagingScrollView: UIScrollView { recycledPages.removeAll() } - func loadAdjacentPhotosIfNecessary(_ photo: SKPhotoProtocol, currentPageIndex: Int) { + func loadAdjacentPhotosIfNecessary(_ photo: SKPhotoProtocol, currentPageIndex: Int, preLoadNum: Int = 1, nextLoadNum: Int = 1) { guard let browser = browser, let page = pageDisplayingAtPhoto(photo) else { return } let pageIndex = (page.tag - pageIndexTagOffset) if currentPageIndex == pageIndex { - // Previous - if pageIndex > 0 { - let previousPhoto = browser.photos[pageIndex - 1] + for i in max(pageIndex - preLoadNum, 0)...(pageIndex + nextLoadNum) { + guard i < numberOfPhotos else { + break + } + guard pageIndex != i else { + continue + } + let previousPhoto = browser.photos[i] if previousPhoto.underlyingImage == nil { previousPhoto.loadUnderlyingImageAndNotify() } } - // Next - if pageIndex < numberOfPhotos - 1 { - let nextPhoto = browser.photos[pageIndex + 1] - if nextPhoto.underlyingImage == nil { - nextPhoto.loadUnderlyingImageAndNotify() - } - } } } diff --git a/SKPhotoBrowser/SKPhotoBrowser.swift b/SKPhotoBrowser/SKPhotoBrowser.swift index d569a3d1..b4e161c1 100644 --- a/SKPhotoBrowser/SKPhotoBrowser.swift +++ b/SKPhotoBrowser/SKPhotoBrowser.swift @@ -15,6 +15,8 @@ open class SKPhotoBrowser: UIViewController { // open function open var currentPageIndex: Int = 0 open var initPageIndex: Int = 0 + open var preLoadNum: Int = 1 + open var nextLoadNum: Int = 1 open var activityItemProvider: UIActivityItemProvider? open var photos: [SKPhotoProtocol] = [] @@ -181,7 +183,10 @@ open class SKPhotoBrowser: UIViewController { } open func loadAdjacentPhotosIfNecessary(_ photo: SKPhotoProtocol) { - pagingScrollView.loadAdjacentPhotosIfNecessary(photo, currentPageIndex: currentPageIndex) + pagingScrollView.loadAdjacentPhotosIfNecessary(photo, + currentPageIndex: currentPageIndex, + preLoadNum: preLoadNum, + nextLoadNum: nextLoadNum) } // MARK: - initialize / setup diff --git a/SKPhotoBrowserExample/SKPhotoBrowserExample/FromWebViewController.swift b/SKPhotoBrowserExample/SKPhotoBrowserExample/FromWebViewController.swift index 50998e6b..ea9c5c2f 100644 --- a/SKPhotoBrowserExample/SKPhotoBrowserExample/FromWebViewController.swift +++ b/SKPhotoBrowserExample/SKPhotoBrowserExample/FromWebViewController.swift @@ -23,6 +23,8 @@ class FromWebViewController: UIViewController, SKPhotoBrowserDelegate { let browser = SKPhotoBrowser(photos: createWebPhotos()) browser.initializePageIndex(0) browser.delegate = self + browser.preLoadNum = 10 + browser.nextLoadNum = 10 present(browser, animated: true, completion: nil) }