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