Skip to content

使用降低采样的方式的时候,明明已经加载到memory 里了, 可是刷新列表的时候reloaddata的时候,总是闪动一下,为什么呢 #2424

@QiuYeHong90

Description

@QiuYeHong90
let processor = DownsamplingImageProcessor(size: size)
                processorIdentifier = processor.identifier
                options = [
                    .processor(processor),
                    .scaleFactor(UIScreen.main.scale),
                    .cacheOriginalImage
                ]


self.kf.setImage(
            with: url,
            placeholder: placeHolderImg,
            options: options, completionHandler:
                {
                    result in
                    switch result {
                    case .success(let value):
                        CalamansiPrint(" Task done for: \(value.source.url?.absoluteString ?? "") cacheType \(value.cacheType) == \(value.image.size) setSize \(size) self.bounds \(self.bounds.size)")
                    case .failure(let error):
                        CalamansiPrint("Job failed: \(error.localizedDescription)")
                    }
                })


然后我这样写就没有闪动的效果了


if isShowPlaceHolder {
            self.kf.indicatorType = .activity
            if !urlStr.hasSuffix(".gif") {
                printLog(message: "--=-=-=不是gif")
                
//                let processor = ResizingImageProcessor(referenceSize: size, mode: .aspectFit)
//                processorIdentifier = processor.identifier
                let processor = DownsamplingImageProcessor(size: size)
                processorIdentifier = processor.identifier
                options = [
                    .processor(processor),
                    .scaleFactor(UIScreen.main.scale),
                    .transition(.fade(1)),
                    .cacheOriginalImage,
                ]
            }
        } else {
            self.kf.indicatorType = .none
            if !urlStr.hasSuffix(".gif") {
                printLog(message: "--=-=-=不是gif")
//                let processor = ResizingImageProcessor(referenceSize: size, mode: .aspectFit)
//                processorIdentifier = processor.identifier
                let processor = DownsamplingImageProcessor(size: size)
                processorIdentifier = processor.identifier
                options = [
                    .processor(processor),
                    .scaleFactor(UIScreen.main.scale),
//                        .transition(.fade(1)),
                    .cacheOriginalImage,
                ]
            }
        }
        if let cacheKey = url?.cacheKey {
            let cacheType = KingfisherManager.shared.cache.imageCachedType(forKey: cacheKey, processorIdentifier: processorIdentifier)
            CalamansiPrint("[Image kf] test1: \(cacheType) \(cacheKey) ----\(urlString)")
            if cacheType == .memory, !urlStr.hasSuffix(".gif") {
                KingfisherManager.shared.cache.retrieveImage(forKey: cacheKey, options: options) {
                    result in
                    switch result {
                    case .success(let value):
                        self.image = value.image
                        CalamansiPrint(" Task done for:  cacheType \(value.cacheType) == \(value.image?.size) setSize \(size) self.bounds \(self.bounds.size)")
                    case .failure(let error):
                        CalamansiPrint("Job failed: \(error.localizedDescription)")
                    }
                }
                
                return
            }
        }
        self.kf.setImage(
            with: url,
            placeholder: placeHolderImg,
            options: options, completionHandler:
                {
                    result in
                    switch result {
                    case .success(let value):
                        CalamansiPrint(" Task done for: \(value.source.url?.absoluteString ?? "") cacheType \(value.cacheType) == \(value.image.size) setSize \(size) self.bounds \(self.bounds.size)")
                    case .failure(let error):
                        CalamansiPrint("Job failed: \(error.localizedDescription)")
                    }
                })

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions