From a1ac0f1634ff0bd8f04259fc4cf7ebabd8c8c82d Mon Sep 17 00:00:00 2001 From: 无故事王国 <841720330@qq.com> Date: 星期二, 10 十月 2023 16:40:52 +0800 Subject: [PATCH] 修复BUG --- WanPai/Root/Home/VC/HomeVC.swift | 167 +++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 106 insertions(+), 61 deletions(-) diff --git a/WanPai/Root/Home/VC/HomeVC.swift b/WanPai/Root/Home/VC/HomeVC.swift index fa5968c..62bc2a1 100644 --- a/WanPai/Root/Home/VC/HomeVC.swift +++ b/WanPai/Root/Home/VC/HomeVC.swift @@ -22,7 +22,7 @@ private var layout:WaterFallFlowLayout! @IBOutlet weak var label_store: UILabel! - private var items = Array<HomeStoreConfigModel>() + private var items = Array<Any>() private var storeModel:HomeStoreModel? private var storeId:Int? private var currentLocal:CLLocation? @@ -51,6 +51,7 @@ if let models = data.data{ let imgs = models.compactMap({$0.img}) self?.view_banner.setImages(images: imgs, type: .URL) { index in + //todo } } @@ -133,32 +134,49 @@ showHUD() let w = (weakSelf.view.frame.width - 78.0) / 2.0 for (_,model) in weakSelf.items.enumerated(){ - SDWebImageDownloader.shared.downloadImage(with: URL(string: model.backgroundImage), options: .useNSURLCache) { _, _,_ in + if let m = model as? HomeStoreConfigModel{ + SDWebImageDownloader.shared.downloadImage(with: URL(string: m.backgroundImage), options: .useNSURLCache) { _, _,_ in - } completed: { image, data, error, status in - if let img = image{ + } completed: {[weak self] image, data, error, status in + if let img = image{ + m.cellHeight = w / (img.size.width / img.size.height) + }else{ + m.cellHeight = w / (m.type.defaultImg.size.width / m.type.defaultImg.size.height) + } i += 1 - model.cellHeight = w / (img.size.width / img.size.height) - }else{ - i += 1 - model.cellHeight = w / (model.type.defaultImg.size.width / model.type.defaultImg.size.height) + if i == weakSelf.items.count{ + self?.updateUI() + } } + } - print("Height:\(model.cellHeight)===\(model.type.rawValue)\n") - if i == weakSelf.items.count{ - //重置Layout,不然不更新 - self!.layout = WaterFallFlowLayout() - self!.layout.itemCount = self!.items.count - self!.layout.delegate = self - self!.layout.cols = 2 - self!.layout.sectionInset = UIEdgeInsets(top: 14, left: 34, bottom: 14, right: 34) - self!.collectionView.collectionViewLayout = self!.layout - self!.collectionView.reloadData() - hiddenHUD() + if let m = model as? HomeStoreTopBannerModel{ + SDWebImageDownloader.shared.downloadImage(with: URL(string: m.backgroundImage), options: .useNSURLCache) { _, _,_ in + + } completed: {[weak self] image, data, error, status in + if let img = image{ + m.cellHeight = w / (img.size.width / img.size.height) + i += 1 + if i == weakSelf.items.count{ + self?.updateUI() + } + } } } } } + } + + private func updateUI(){ + //重置Layout,不然不更新 + layout = WaterFallFlowLayout() + layout.itemCount = items.count + layout.delegate = self + layout.cols = 2 + layout.sectionInset = UIEdgeInsets(top: 14, left: 34, bottom: 14, right: 34) + collectionView.collectionViewLayout = self.layout + collectionView.reloadData() + hiddenHUD() } private func startLocation(){ @@ -195,6 +213,7 @@ guard let weakSelf = self else { return } weakSelf.storeId = storeId weakSelf.label_store.text = storeName + weakSelf.storeModel = HomeStoreModel(isVip: 0, storeId: storeId, name: storeName, lon: 0, lat: 0) weakSelf.items.removeAll() weakSelf.getStoreItemList() } @@ -207,46 +226,57 @@ extension HomeVC:UICollectionViewDelegate{ func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { - let item = items[indexPath.row] - switch item.type{ - case .course: - let vc = CourseListVC() - push(vc: vc) - case .booking: - let vc = YardListVC() - push(vc: vc) - case .activity: - let vc = ActivityListVC() - push(vc: vc) - case .video: - let vc = CourseOnlineListVC(position: 2) - vc.title = "看视频得奖励" - push(vc: vc) - case .coin: - let vc = CourseOnlineListVC(position: 1) - vc.title = "线上课得积分" - push(vc: vc) - case .ticket: - let vc = WelfareWeeklyListVC() - push(vc: vc) - case .wisdomCourt: - guard storeId != 0 else {alert(msg: "请先选择门店");return} - let vc = GamesVC() - push(vc: vc) - case .welfare: - if storeId != 0{ - Services.queryStoreFreeBenefit(id: storeId!).subscribe(onNext: {[weak self] data in - if let m = data.data{ - let vc = WelfareFreeVC(m) - self?.push(vc: vc) - } - }).disposed(by: disposeBag) - }else{ - alertError(msg: "当前门店获取失败") - } - case .none:break - } + var simpleModel:NormalSimpleModel? + if storeModel != nil{ + simpleModel = NormalSimpleModel(id: storeModel!.storeId, name: storeModel!.name) + } + + let item = items[indexPath.row] + if let m = item as? HomeStoreConfigModel{ + switch m.type{ + case .course: + let vc = CourseListVC(selectStore: simpleModel) + push(vc: vc) + case .booking: + let vc = YardListVC(selectStore: simpleModel) + push(vc: vc) + case .activity: + let vc = ActivityListVC() + push(vc: vc) + case .video: + let vc = CourseOnlineListVC(position: 2) + vc.title = "看视频得奖励" + push(vc: vc) + case .coin: + let vc = CourseOnlineListVC(position: 1) + vc.title = "线上课得积分" + push(vc: vc) + case .ticket: + let vc = WelfareWeeklyListVC() + push(vc: vc) + case .wisdomCourt: + guard storeId != 0 else {alert(msg: "请先选择门店");return} + let vc = GamesVC() + push(vc: vc) + case .welfare: + if storeId != 0{ + Services.queryStoreFreeBenefit(id: storeId!).subscribe(onNext: {[weak self] data in + if let m = data.data{ + let vc = WelfareFreeVC(m) + self?.push(vc: vc) + } + }).disposed(by: disposeBag) + }else{ + alertError(msg: "当前门店获取失败") + } + case .none:break + } + } + + if let m = item as? HomeStoreTopBannerModel{ + jumpPage(name: m.name, page: m.page, type: m.type,id: m.turnId) + } } } @@ -255,7 +285,14 @@ func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_HomeCCell", for: indexPath) as! HomeCCell let item = items[indexPath.row] - cell.img.sd_setImage(with: URL(string: item.backgroundImage), placeholderImage: item.type.defaultImg, options: .lowPriority) + + if let m = item as? HomeStoreConfigModel{ + cell.img.sd_setImage(with: URL(string: m.backgroundImage), placeholderImage: m.type.defaultImg, options: .lowPriority) + } + + if let m = item as? HomeStoreTopBannerModel{ + cell.img.sd_setImage(with: URL(string: m.backgroundImage), placeholderImage: nil, options: .lowPriority) + } cell.img.cornerRadius = 10 return cell } @@ -269,8 +306,16 @@ extension HomeVC: WaterFallLayoutDelegate{ func waterFlowLayout(_ waterFlowLayout: WaterFallFlowLayout, itemHeight indexPath: IndexPath) -> CGFloat { let item = items[indexPath.row] - print("===\(item.cellHeight)") - return item.cellHeight + + if let m = item as? HomeStoreConfigModel{ + return m.cellHeight + } + + if let m = item as? HomeStoreTopBannerModel{ + return m.cellHeight + } + + return 0 } } -- Gitblit v1.7.1