iOS学习笔记

SDWebImage 5 获取缓存大小&设置缓存路径过滤(swi

2019-12-03  本文已影响0人  唯牧雪

最近升级到SDWebImage5.x,看了看迁移文档api变动还是挺大的,虽然迁移文档写得很详细了,但是并没有具体的举例。这里总结了一下比较常用的两个api的示例

    // 获取缓存大小
    fileprivate func getCacheSize(){
        let totalSize = SDImageCache.shared.totalDiskSize()
        let size = CGFloat(totalSize) / 1024.0 / 1024.0
        self.cacheSizeLabel.text = String(format: "%.1f", size) + "M"
    }

    // 清除缓存点击响应
    @IBAction func clearCacheTouched(_ sender: Any) {
        SDWebImageManager.shared.imageCache.clear(with: .disk) {
            self.getCacheSize()
        }
    }
        let cacheKeyFilter = SDWebImageCacheKeyFilter.init { (url) -> String? in
            if let host = url.host {
                if host.contains("你的服务器地址.oss") {
                    let urlStr = url.absoluteString
                    if let range = urlStr.range(of: "?") {
                        var cacheKey = String(urlStr.prefix(upTo: range.upperBound))
                        if let range = urlStr.range(of: "x-oss-process=") {
                            cacheKey = cacheKey + String(urlStr.suffix(from: range.lowerBound))
                        }
                        printD(cacheKey)
                        return cacheKey
                    }
                }
            }
            return url.absoluteString
        }
        SDWebImageManager.shared.cacheKeyFilter = cacheKeyFilter

如果要支持gif的话还是建议升级到SDWebImage 5.x的,我之前使用的是SDWebImage 4.4.6 它有一个bug,从一个controller push到另一个controller的时候,如果gif的帧数比较高,在页面跳转的动画过程中,gif图片会变白,页面滑动效果结束后才会出现,这样体验非常不好。在SDWebImage 5.x中增加了对gif的支持,不需要再像4.x那样引入SDWebImage/GIF(里面包含FLAnimatedImage)了。

上一篇 下一篇

猜你喜欢

热点阅读