【发布时间】:2021-09-06 23:59:41
【问题描述】:
我有一个显示图像缩略图的 NSCollectionView,我刚刚切换到使用 QLThumbnailGenerator 来获取它们。 可以查看超过 6,000 张可能的图像,如果我滚动得太快,我会开始从生成器返回错误的缩略图。 这是一个错误,还是我可以做些什么来解决这个问题? 这是在 NSCollectionViewItem 派生类中编写的代码……
var request: QLThumbnailGenerator.Request?
func loadImage()
{
if imageView?.image != NSImage(imageLiteralResourceName: "Placeholder")
{
return
}
request = QLThumbnailGenerator.Request(fileAt: url!, size: imageSize, scale: 1.0, representationTypes: [.lowQualityThumbnail])
QLThumbnailGenerator.shared.generateBestRepresentation(for: request!)
{
(thumbnail: QLThumbnailRepresentation?, error: Error?) -> Void in
if let request = self.request
{
QLThumbnailGenerator.shared.cancel(request)
}
DispatchQueue.main.async
{
[unowned self] in
if self.imageView?.image != NSImage(imageLiteralResourceName: "Placeholder")
{
return
}
let transition = CATransition()
transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut)
transition.duration = 0.3
imageView?.layer?.add(transition, forKey: nil)
imageView?.image = thumbnail?.nsImage
…
【问题讨论】:
-
我的猜测:当它们被滚动到视图之外时,它们会被重复使用。到完成处理程序被调用时,该项目不再是 url 的项目。
标签: swift thumbnails nscollectionview quicklook