如何从按钮的 imageView 中删除缓存的 SDWebImage

Posted

技术标签:

【中文标题】如何从按钮的 imageView 中删除缓存的 SDWebImage【英文标题】:How to delete cached SDWebImage from a button's imageView 【发布时间】:2020-02-26 13:13:48 【问题描述】:

所以我有一个 UIButton,它的 imageView 使用下载 URL 设置为图像。为此,我使用 SDWebImage。

问题是,当我按下删除按钮时,我希望图像完全消失,但我想它不起作用,因为图像仍在从缓存中检索。我该如何解决?

class ViewController: UIViewController

    var profileButton: UIButton = 
        let button = UIButton(type: .system)
        return button
    ()

    var user: User?

    override func viewDidLoad() 
        super.viewDidLoad()
        view.addSubview(profileButton)
        profileButton.addTarget(self, action: #selector(handleDelete), for: .touchUpInside)

        self.loadUserPhotos()
    

    fileprivate func loadUserPhotos()
        let profileImageUrl = self.user?.profileImageUrl1
        if let imageUrl = profileImageUrl, let url = URL(string: imageUrl)
            SDWebImageManager.shared().loadImage(with: url, options: .continueInBackground, progress: nil)  (image, _, _, _, _, _) in
                self.profileButton.setImage(image?.withRenderingMode(.alwaysOriginal), for: .normal)
            
        
    

    @objc func handleDelete()
        self.user?.profileImageUrl1 = ""
        self.profileButton.imageView?.image = nil
        self.loadUserPhotos()
    

【问题讨论】:

这能回答你的问题吗? How to clear all cached images loaded from SDWebImage? 【参考方案1】:

要从 UIButton 中删除图像,您还需要提及状态。

self.profileButton.setImage(nil, for: .normal)

【讨论】:

这行得通。不必执行清除缓存的额外步骤。我猜是 SDWEB 自己处理的还是自己处理? 当图像位于缓存中时,您将按钮中的图像设置为 nil。您不必为此删除缓存。【参考方案2】:

你可以使用:

SDImageCache.shared.removeImage(forKey: url?.description, withCompletion: nil)

【讨论】:

以上是关于如何从按钮的 imageView 中删除缓存的 SDWebImage的主要内容,如果未能解决你的问题,请参考以下文章

Android RecyclerView 添加和删除项

如何从 tableview 的单元格中删除 imageView,并重置单元格的高度

Android 从imageview中获得bitmap的方法

Android从imageview中获得bitmap

如何在 LinearLayout 中删除 ImageView

如何将url图像存储在缓存中,然后在iphone的imageview中显示