| | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | viewModel.configure(collectionView,needMore: false) |
| | | |
| | | startLocation() |
| | | |
| | | viewModel.dataSource.subscribe(onNext: {[weak self] data in |
| | | guard let weakSelf = self else { return } |
| | | guard data.count != 0 else {return} |
| | | weakSelf.items = data |
| | | let group = DispatchGroup() |
| | | |
| | | Services.homeInfo2(storeId: weakSelf.viewModel.storeId.value).subscribe(onNext: {data in |
| | | |
| | | }) { error in |
| | | |
| | | }.disposed(by: weakSelf.disposeBag) |
| | | |
| | | |
| | | group.notify(queue: .main){ |
| | | //重置Layout,不然不更新 |
| | | self!.layout = WaterFallFlowLayout() |
| | | self!.layout.cols = 2 |
| | | self!.layout.sectionInset = UIEdgeInsets(top: 14, left: 34, bottom: 14, right: 34) |
| | | self!.layout.delegate = self |
| | | self!.collectionView.collectionViewLayout = self!.layout |
| | | self!.collectionView.reloadData() |
| | | } |
| | | |
| | | }).disposed(by: disposeBag) |
| | | |
| | | Services.startCourseHome().subscribe(onNext: {[weak self] data in |
| | | if let model = data.data{ |
| | |
| | | }) { error in |
| | | |
| | | }.disposed(by: disposeBag) |
| | | |
| | | viewModel.dataSource.subscribe(onNext: {[weak self] data in |
| | | guard let weakSelf = self else { return } |
| | | guard data.count != 0 else {return} |
| | | |
| | | weakSelf.items = data |
| | | let group = DispatchGroup() |
| | | |
| | | let queue = DispatchQueue(label: "imgRadio") |
| | | queue.async(group: group){ |
| | | group.enter() |
| | | Services.homeStoreConfig2(storeId: weakSelf.viewModel.storeId.value).subscribe(onNext: { data in |
| | | if let items = data.data{ |
| | | weakSelf.items.append(contentsOf: items) |
| | | var i = 0 |
| | | for (_,model) in weakSelf.items.enumerated(){ |
| | | SDWebImageDownloader.shared.downloadImage(with: URL(string: model.backgroundImage)) { image, data, error, status in |
| | | if let i = image{ |
| | | model.radio = i.size.width / i.size.height |
| | | }else{ |
| | | model.radio = model.type.defaultImg.size.width / model.type.defaultImg.size.height |
| | | } |
| | | i += 1 |
| | | if i == weakSelf.items.count - 1{ |
| | | group.leave() |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }) { error in |
| | | group.leave() |
| | | }.disposed(by: weakSelf.disposeBag) |
| | | } |
| | | |
| | | group.notify(queue: .main){ |
| | | //重置Layout,不然不更新 |
| | | self!.layout = WaterFallFlowLayout() |
| | | self!.layout.cols = 2 |
| | | self!.layout.sectionInset = UIEdgeInsets(top: 14, left: 34, bottom: 14, right: 34) |
| | | self!.layout.delegate = self |
| | | self!.collectionView.collectionViewLayout = self!.layout |
| | | self!.collectionView.reloadData() |
| | | } |
| | | |
| | | }).disposed(by: disposeBag) |
| | | |
| | | } |
| | | |
| | |
| | | self?.label_vipInfo.text = text |
| | | } |
| | | self?.viewModel.beginRefresh() |
| | | }else{ |
| | | self?.defaultData() |
| | | } |
| | | } |
| | | }) { [weak self] error in |
| | | self?.label_store.text = "门店获取失败" |
| | | self?.defaultData() |
| | | }.disposed(by: disposeBag) |
| | | } |
| | | |
| | | private func defaultData(){ |
| | | for index in 1...8{ |
| | | let type = HomeItemType(rawValue: index)! |
| | | let m = HomeStoreConfigModel() |
| | | m.type = type |
| | | m.isOpen = 1 |
| | | m.sort = index |
| | | m.radio = type.defaultImg.size.width / type.defaultImg.size.height |
| | | items.append(m) |
| | | } |
| | | collectionView.reloadData() |
| | | } |
| | | |
| | | private func startLocation(){ |
| | |
| | | let vc = WelfareWeeklyListVC() |
| | | push(vc: vc) |
| | | case .wisdomCourt: |
| | | guard viewModel.storeId.value != 0 else {alert(msg: "请先选择门店");return} |
| | | let vc = GamesVC() |
| | | push(vc: vc) |
| | | case .welfare: |
| | |
| | | |
| | | extension HomeVC: WaterFallLayoutDelegate{ |
| | | func waterFlowLayout(_ waterFlowLayout: WaterFallFlowLayout, itemHeight indexPath: IndexPath) -> CGFloat { |
| | | if indexPath.row % 2 != 0{ |
| | | return 185 |
| | | }else{ |
| | | return 288 |
| | | } |
| | | let item = items[indexPath.row] |
| | | let w = (view.frame.width - 68 - waterFlowLayout.minimumLineSpacing) / Double(waterFlowLayout.cols) |
| | | return w / item.radio |
| | | } |
| | | } |
| | | |