動機
PINRemoteImageManagerでキャッシュした画像をUIActivityViewController
を使ってシェアしたかった。
そのときにどうやってキャッシュしたUIImageを取得するかわからなかったため。
方法
PINRemoteImageManagerのdownloadImage
メソッドを使う
用意されたメソッドを使うだけだが意外と調べても出てこなかったのでメモ。
guard let url = url else { return }
_ = PINRemoteImageManager.shared().downloadImage(with: url) { (result) in
// resultはPINRemoteImageManagerResult型でimageプロパティから画像が取得できる
var activityItems: [Any] = [result.image]
}
こそっとリファレンスを見てみる
Summary
Download or retrieve from cache the image found at the url.
All completions are called on an arbitrary callback queue unless called on the main thread and the result is in the memory cache (this is an optimization to allow synchronous results for the UI when an object is cached in memory).
日本語訳
URLで見つかったイメージをダウンロードするか、キャッシュから取得します。
すべての補完は、メイン・スレッドで呼び出され、その結果がmemory cache(これは、オブジェクトがメモリにキャッシュされたときのUIの同期結果を可能にする最適化です。)にない限り、任意のcallbackで呼び出されます。
キャッシュがあればキャッシュから取得、無ければダウンロードしてくれる便利メソッドでした。
Pinterest様様ですね。
Declaration
downloadImageWithURL:(nonnull NSURL *)url
completion:(nullable PINRemoteImageManagerImageCompletion)completion;```