Last active
June 4, 2018 12:01
-
-
Save mwaterfall/d23dfd90f1a19cc569cbf6651392447f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension UIImageView { | |
func apply(_ imageDescriptor: ImageDescriptor<UIImage>) { | |
cancelAnyExistingFetches() | |
accessibilityIdentifier = imageDescriptor.properties.accessibilityIdentifier | |
backgroundColor = imageDescriptor.properties.backgroundColor | |
contentMode = imageDescriptor.properties.contentMode | |
tintColor = imageDescriptor.properties.tintColor | |
image = imageDescriptor.imageReference | |
} | |
func apply( | |
_ imageDescriptor: ImageDescriptor<URL>, | |
loading loadingImageDescriptor: ImageDescriptor<UIImage>? = nil, | |
failure failureImageDescriptor: ImageDescriptor<UIImage>? = nil | |
) { | |
cancelAnyExistingFetches() | |
if let loadingImageDescriptor = loadingImageDescriptor { | |
apply(loadingImageDescriptor) | |
} | |
let imageURL = imageDescriptor.imageReference | |
fetchImage(with: imageURL) { [weak self] result in | |
guard let _self = self else { | |
return | |
} | |
switch result { | |
case .success(let image): | |
let downloadedImageDescriptor = ImageDescriptor<UIImage>( | |
imageReference: image, | |
properties: imageDescriptor.properties | |
) | |
_self.apply(downloadedImageDescriptor) | |
case .failure: | |
if let failureImageDescriptor = failureImageDescriptor { | |
_self.apply(failureImageDescriptor) | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment