| | |
| | | import UIKit |
| | | import JQTools |
| | | import RxSwift |
| | | import RxCocoa |
| | | import SDWebImage |
| | | |
| | | //http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4 |
| | | //http://vjs.zencdn.net/v/oceans.mp4 |
| | | //https://media.w3.org/2010/05/sintel/trailer.mp4 |
| | | |
| | | class HomeVC: BaseVC,Refreshable{ |
| | | class HomeViewModel:RefreshModel<HomeStoreConfigModel>{ |
| | | let storeId = BehaviorRelay<Int>(value: 0) |
| | | |
| | | override func api() -> (Observable<BaseResponse<[HomeStoreConfigModel]>>)? { |
| | | return Services.homeStoreConfig(storeId: 1) |
| | | } |
| | | } |
| | | |
| | | class HomeVC: BaseVC{ |
| | | @IBOutlet weak var collectionView: BaseCollectionView! |
| | | @IBOutlet weak var label_vipInfo: UILabel! |
| | | |
| | |
| | | @IBOutlet weak var label_store: UILabel! |
| | | private var items = Array<HomeStoreConfigModel>() |
| | | private var storeModel:HomeStoreModel? |
| | | var viewModel = HomeViewModel() |
| | | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | viewModel.configure(collectionView,needMore: false) |
| | | |
| | | locationTool.startLocation { [weak self] local in |
| | | locationTool.stopLocation() |
| | |
| | | self?.getStoreInfo() |
| | | } |
| | | |
| | | refreshStatusBind(to: collectionView,header: { [weak self] () in |
| | | guard let weakSelf = self,weakSelf.storeModel != nil else { |
| | | self?.refreshStatus.onNext(.endHeaderRefresh);return |
| | | } |
| | | Services.homeStoreConfig(storeId: weakSelf.storeModel!.storeId).subscribe(onNext: {data in |
| | | if let models = data.data{ |
| | | self?.items = models |
| | | 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() |
| | | |
| | | for m in models{ |
| | | for m in weakSelf.items{ |
| | | let queue = DispatchQueue(label: "1") |
| | | queue.async(group: group) { |
| | | group.enter() |
| | | SDWebImageDownloader.shared.downloadImage(with: URL(string: m.backgroundImage)) { image, data, error, status in |
| | | SDWebImageDownloader.shared.downloadImage(with: URL(string: m.backgroundImage),options: .scaleDownLargeImages,progress: nil) { image, data, error, status in |
| | | if let i = image{ |
| | | m.radio = i.size.width / i.size.height |
| | | } |
| | |
| | | } |
| | | |
| | | group.notify(queue: .main){ |
| | | self?.refreshStatus.onNext(.endHeaderRefresh) |
| | | self?.collectionView.reloadData() |
| | | //重置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) |
| | | } |
| | | }).disposed(by: weakSelf.disposeBag) |
| | | }) |
| | | |
| | | override func setRx() { |
| | | |
| | | } |
| | | |
| | | override func setUI() { |
| | |
| | | self?.label_vipInfo.text = text |
| | | |
| | | if m.storeId != 0{ |
| | | self?.storeModel = m |
| | | self?.refreshStatus.onNext(.beingHeaderRefresh) |
| | | self?.viewModel.storeId.accept(m.storeId) |
| | | self?.viewModel.beginRefresh() |
| | | }else{ |
| | | self?.defaultData() |
| | | } |