[iOS] MessageKitで画像の非同期読み込みを行う
MessageKitで画像の非同期読み込みをやりたかったのだが、マニュアルにやり方かいてなかったのでメモ。
答えはここにあった。
cf: Async Images with KingFisher with configureMediaMessageImageView #752
今回私はNukeを使っていたのでNukeでこんな感じで書いてみた。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class ViewController: MessagesViewController, MessagesDisplayDelegate { func configureMediaMessageImageView(_ imageView: UIImageView, for message: MessageType, at indexPath: IndexPath, in messagesCollectionView: MessagesCollectionView) { switch message.kind { // 画像のチャットのときだけ非同期読み込みを行う case .photo(let photoItem): /// if we don't have a url, that means it's simply a pending message guard let url = photoItem.url else { return } imageView.contentMode = .scaleAspectFit // 読み込むまでの画像を設定 let options = ImageLoadingOptions(placeholder: #imageLiteral(resourceName: "IconImage")) Nuke.loadImage(with: url, options: options, into: imageView) default: break } } } |
これでいい画像ビューワーライフが送れる