From 49a9324c6317fbd68d34738d768584cbd9705946 Mon Sep 17 00:00:00 2001 From: CocoaBob Date: Tue, 12 Jun 2018 17:17:27 -0400 Subject: [PATCH] Now asset supports remote url. --- TLPhotoPicker/Classes/TLAssetsCollection.swift | 16 ++++++++++++---- TLPhotoPicker/Classes/TLBundle.swift | 1 + .../Classes/TLPhotosPickerViewController.swift | 14 ++++++++++++-- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/TLPhotoPicker/Classes/TLAssetsCollection.swift b/TLPhotoPicker/Classes/TLAssetsCollection.swift index 8d495518..3debe7ec 100755 --- a/TLPhotoPicker/Classes/TLAssetsCollection.swift +++ b/TLPhotoPicker/Classes/TLAssetsCollection.swift @@ -12,6 +12,7 @@ import PhotosUI import MobileCoreServices public class TLPHAsset { + enum CloudDownloadState { case ready, progress, complete, failed } @@ -32,9 +33,9 @@ public class TLPHAsset { guard let phAsset = self.phAsset else { return .photo } if phAsset.mediaSubtypes.contains(.photoLive) { return .livePhoto - }else if phAsset.mediaType == .video { + } else if phAsset.mediaType == .video { return .video - }else { + } else { return .photo } } @@ -46,14 +47,16 @@ public class TLPHAsset { _fullResolutionImage = newValue } get { - if let _ = _fullResolutionImage { - return _fullResolutionImage + if let image = _fullResolutionImage { + return image } guard let phAsset = self.phAsset else { return nil } return TLPhotoLibrary.fullResolutionImageData(asset: phAsset) } } + public var url: URL? + public func extType() -> ImageExtType { var ext = ImageExtType.png if let fileName = self.originalFileName, let extention = URL(string: fileName)?.pathExtension.lowercased() { @@ -209,6 +212,11 @@ public class TLPHAsset { self.init(asset: nil) self.fullResolutionImage = image } + + public convenience init(url: URL) { + self.init(asset: nil) + self.url = url + } } extension TLPHAsset: Equatable { diff --git a/TLPhotoPicker/Classes/TLBundle.swift b/TLPhotoPicker/Classes/TLBundle.swift index 0b4060b8..f926e039 100644 --- a/TLPhotoPicker/Classes/TLBundle.swift +++ b/TLPhotoPicker/Classes/TLBundle.swift @@ -9,6 +9,7 @@ import Foundation class TLBundle { + class func podBundleImage(named: String) -> UIImage? { let podBundle = Bundle(for: TLBundle.self) if let url = podBundle.url(forResource: "TLPhotoPickerController", withExtension: "bundle") { diff --git a/TLPhotoPicker/Classes/TLPhotosPickerViewController.swift b/TLPhotoPicker/Classes/TLPhotosPickerViewController.swift index 11f1a618..ce2227cf 100755 --- a/TLPhotoPicker/Classes/TLPhotosPickerViewController.swift +++ b/TLPhotoPicker/Classes/TLPhotosPickerViewController.swift @@ -11,6 +11,7 @@ import Photos import PhotosUI import MobileCoreServices import UIKit.UIGestureRecognizerSubclass +import SDWebImage public protocol TLPhotosPickerViewControllerDelegate: class { func willDismissPhotoPicker(with phAssets: [PHAsset]) @@ -810,8 +811,17 @@ extension TLPhotosPickerViewController: UICollectionViewDelegate,UICollectionVie } else { cell.indicator?.stopAnimating() } - if let customCollection = customCollection, collection == customCollection, let image = asset.fullResolutionImage { - cell.imageView?.image = image + if let customCollection = customCollection, collection == customCollection { + if let image = asset.fullResolutionImage { + cell.imageView?.image = image + } else if let url = asset.url { + cell.imageView?.sd_setImage(with: url, + placeholderImage: self.configure.placeholderIcon, + options: [.continueInBackground, .allowInvalidSSLCertificates, .highPriority], + completed: { (image, error, type, url) -> Void in + asset.fullResolutionImage = image + }) + } } else if let phAsset = asset.phAsset { if self.usedPrefetch { let options = PHImageRequestOptions()