私TableViewCell
はこのメソッドを使用してサーバーから URL を取得しています。次に、ビデオのサムネイル画像を作成し、最後にUIImageView
.
var URL: String? {
didSet {
if gotThumb == false {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {
let videoUrl = NSURL(string: Somelink )
let asset = AVAsset(URL: videoUrl!)
let assetImgGenerate = AVAssetImageGenerator(asset: asset)
assetImgGenerate.appliesPreferredTrackTransform = true
let time = CMTimeMake(asset.duration.value / 3, asset.duration.timescale)
dispatch_async(dispatch_get_main_queue(), {
if let cgImage = try? assetImgGenerate.copyCGImageAtTime(time, actualTime: nil) {
self.thumbImageView.hnk_setImage(UIImage(CGImage: cgImage), key: "\(self.thumbImageView.tag)", placeholder: nil, format: nil, success: { (image) -> () in
print("Got Thumb")
self.thumbImageView.image = image
self.gotThumb = true
})
}
})
})
} else {
print("Already have an image")
}
print(URL!)
}
}
私のタイトルが示すように。Haneke は、上記の方法で作成された最初の 3 つの画像のみをキャッシュしています。何が起こるかというと、どれだけImageViews
持っていTableView
ても、最初の 3 つの画像がすべて読み込まれます。
私はこの問題を解決する方法にかなりこだわっています。