From 09a372bc45fde16fd42257ab6f78b8deeecf720b Mon Sep 17 00:00:00 2001
From: 杨锴 <841720330@qq.com>
Date: 星期三, 16 四月 2025 16:38:05 +0800
Subject: [PATCH] fix bug

---
 XQMuse/Root/TreeGroup/TreeTeskVC.swift |  148 ++++++++++++++++++++++++++++++------------------
 1 files changed, 92 insertions(+), 56 deletions(-)

diff --git a/XQMuse/Root/TreeGroup/TreeTeskVC.swift b/XQMuse/Root/TreeGroup/TreeTeskVC.swift
index a4421cc..5cd1190 100644
--- a/XQMuse/Root/TreeGroup/TreeTeskVC.swift
+++ b/XQMuse/Root/TreeGroup/TreeTeskVC.swift
@@ -9,6 +9,7 @@
 import AVKit
 import JQTools
 import APNGKit
+import SDWebImage
 import UserDefaultsStore
 
 let TreeTaskUpdate_Noti = Notification.Name.init(rawValue: "TreeTaskUpdate_Noti")
@@ -146,17 +147,21 @@
 
 								view_group_inner.jq_addCorners(corner: [.topLeft,.bottomRight], radius: 8)
 
+        let path = JQ_LibaryPath +  "/tree_img/"
+        SDImageCacheHealper.cache(namespace:"treeCache", path: path, url: TreeLevel.sunAni) { [unowned self] data in
+            guard let originData = data else {return}
+            if let sunApngImage = try? APNGImage(data: originData){
+                sunApngImage.numberOfPlays = 2
+                aPNGSunImageView = APNGImageView(image: sunApngImage)
+                view.addSubview(aPNGSunImageView!)
+                aPNGSunImageView?.layer.zPosition = -998
+                aPNGSunImageView!.snp.makeConstraints { make in
+                    make.edges.equalToSuperview()
+                }
+                aPNGSunImageView!.startAnimating()
+            }
+        }
 
-								if let sunApngImage = try? APNGImage(fileURL: Bundle.main.url(forResource: "apngb-animated_sun", withExtension: "png")!){
-												sunApngImage.numberOfPlays = 2
-												aPNGSunImageView = APNGImageView(image: sunApngImage)
-												view.addSubview(aPNGSunImageView!)
-												aPNGSunImageView?.layer.zPosition = -998
-												aPNGSunImageView!.snp.makeConstraints { make in
-																make.edges.equalToSuperview()
-												}
-												aPNGSunImageView!.startAnimating()
-								}
 								updateAni()
 
 								view.addSubview(taskListView)
@@ -417,63 +422,65 @@
 
     private func updateAni(_ needAni:Bool = true){
         guard let treeLevel = currentLevel else {return}
-
-								guard let animateUrl = Bundle.main.url(forResource: treeLevel.aniResource, withExtension: "png") else {return}
 								guard let staticDroopUrl = Bundle.main.url(forResource: treeLevel.staticDroopResource, withExtension: "png") else {return}
 
-								if let treeApngImage = try? APNGImage(fileURL: animateUrl){
+        let path = JQ_LibaryPath +  "/tree_img/"
+        SDImageCacheHealper.cache(namespace:"treeCache", path: path, url: treeLevel.aniResourceUrl) { [unowned self] data in
+            guard let dataOrigin = data else {return}
+            if let treeApngImage = try? APNGImage(data: dataOrigin){
 
-												if treeLevel == .level_1{
-																treeApngImage.numberOfPlays = 1
-												}else{
-																treeApngImage.numberOfPlays = 0
-												}
+                if treeLevel == .level_1{
+                    treeApngImage.numberOfPlays = 1
+                }else{
+                    treeApngImage.numberOfPlays = 0
+                }
 
-												if aPNGTreeImageView == nil{
-																aPNGTreeImageView = APNGImageView(image: treeApngImage)
-																aPNGTreeImageView?.tag = 10101
-																aPNGTreeImageView!.contentMode = .redraw
-																let tap = UITapGestureRecognizer(target: self, action: #selector(jumpAction))
-																aPNGTreeImageView!.addGestureRecognizer(tap)
-												}
+                if self.aPNGTreeImageView == nil{
+                    self.aPNGTreeImageView = APNGImageView(image: treeApngImage)
+                    self.aPNGTreeImageView?.tag = 10101
+                    self.aPNGTreeImageView!.contentMode = .redraw
+                    let tap = UITapGestureRecognizer(target: self, action: #selector(jumpAction))
+                    self.aPNGTreeImageView!.addGestureRecognizer(tap)
+                }
 
-												if view.viewWithTag(10101) == nil{
-																view.addSubview(aPNGTreeImageView!)
-												}
+                if view.viewWithTag(10101) == nil{
+                    view.addSubview(self.aPNGTreeImageView!)
+                }
 
-												let scale:Double = 0.55 //放大倍数
+                let scale:Double = 0.55 //放大倍数
 
-												aPNGTreeImageView!.snp.remakeConstraints { make in
-																make.centerX.equalToSuperview().offset(-10)
-																make.bottom.equalToSuperview().offset(-220)
-																make.width.equalTo(642 * scale)
-																make.height.equalTo(731 * scale)
-												}
+                self.aPNGTreeImageView!.snp.remakeConstraints { make in
+                    make.centerX.equalToSuperview().offset(-10)
+                    make.bottom.equalToSuperview().offset(-220)
+                    make.width.equalTo(642 * scale)
+                    make.height.equalTo(731 * scale)
+                }
 
-            let duration = needAni ? 0.6:0
-												UIView.animate(withDuration: duration) {
-																self.aPNGTreeImageView?.alpha = 0
+                let duration = needAni ? 0.6:0
+                UIView.animate(withDuration: duration) {
+                    self.aPNGTreeImageView?.alpha = 0
 
-												}completion: { state in
-																if state{
-																				self.aPNGTreeImageView!.image = treeApngImage
-																				UIView.animate(withDuration: 0.5, delay: 0.2) {
-																								self.aPNGTreeImageView?.alpha = 1
-																				}completion: { _ in
-																								self.aPNGTreeImageView!.startAnimating()
+                }completion: { state in
+                    if state{
+                        self.aPNGTreeImageView!.image = treeApngImage
+                        UIView.animate(withDuration: 0.5, delay: 0.2) {
+                            self.aPNGTreeImageView?.alpha = 1
+                        }completion: { _ in
+                            self.aPNGTreeImageView!.startAnimating()
 
-																								if self.treeInfoModel?.status == .yes{
-																												self.aPNGTreeImageView?.stopAnimating()
-																												self.aPNGTreeImageView?.image = nil
-																												self.aPNGTreeImageView?.staticImage = UIImage(contentsOfFile: staticDroopUrl.droppedScheme()!.absoluteString)
-                        }else{
-                            self.aPNGTreeImageView?.staticImage = nil
-                            self.aPNGTreeImageView?.image = treeApngImage
+                            if self.treeInfoModel?.status == .yes{
+                                self.aPNGTreeImageView?.stopAnimating()
+                                self.aPNGTreeImageView?.image = nil
+                                self.aPNGTreeImageView?.staticImage = UIImage(contentsOfFile: staticDroopUrl.droppedScheme()!.absoluteString)
+                            }else{
+                                self.aPNGTreeImageView?.staticImage = nil
+                                self.aPNGTreeImageView?.image = treeApngImage
+                            }
                         }
-																				}
-																}
-												}
-								}
+                    }
+                }
+            }
+        }
 				}
 }
 
@@ -490,3 +497,32 @@
 //								}
 				}
 }
+
+class SDImageCacheHealper{
+    static func cache(namespace:String,path:String,url:String,clouse:@escaping (Data?)->Void){
+        let image = SDImageCache(namespace: namespace.jq_md5String(), diskCacheDirectory: path)
+        let loader = SDImageLoadersManager.shared
+
+        let manager = SDWebImageManager(cache: image, loader: loader)
+
+        //过滤链接,去除参数,保证缓存的KEY被MD5后不变
+        manager.cacheKeyFilter = SDWebImageCacheKeyFilter(block: { url in
+            let img = url.absoluteString.components(separatedBy: "?").first
+            return img
+        })
+
+        if let localImgData = image.diskImageData(forKey: url){
+            clouse(localImgData)
+        }else{
+            let originUrl = URL(string: url)
+            manager.loadImage(with: originUrl, progress: nil) { imageData, data,error, cacheType, finished, imageUrl in
+                if error != nil{
+                    clouse(nil)
+                }
+                if data != nil{
+                    clouse(data)
+                }
+            }
+        }
+    }
+}

--
Gitblit v1.7.1