Categories: iOS

[iOS] MessageKitで画像の非同期読み込みを行う

MessageKitで画像の非同期読み込みをやりたかったのだが、マニュアルにやり方かいてなかったのでメモ。

答えはここにあった。
cf: Async Images with KingFisher with configureMediaMessageImageView #752

今回私はNukeを使っていたのでNukeでこんな感じで書いてみた。

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
        }

    }
}

これでいい画像ビューワーライフが送れる

mogmet

View Comments