| | |
| | | private var tempViews = [StudyHandleView]() |
| | | |
| | | private var playedIndex = Set<Int>() //已经播放过的view |
| | | private var voicePlayer = VoicePlayer.share() |
| | | |
| | | private lazy var stackView:UIStackView = { |
| | | let stackView = UIStackView() |
| | |
| | | super.init(nibName: nil, bundle: nil) |
| | | self.page = page |
| | | self.listen1Model = listen1Model |
| | | self.listen1Model.subjectList.shuffle() |
| | | } |
| | | |
| | | required init?(coder: NSCoder) { |
| | |
| | | override func viewDidLoad() { |
| | | super.viewDidLoad() |
| | | navigationItem.titleView = UIView() |
| | | } |
| | | |
| | | override func viewDidAppear(_ animated: Bool) { |
| | | super.viewDidAppear(animated) |
| | | VoicePlayer.share().delegate = self |
| | | } |
| | | |
| | | override func viewDidDisappear(_ animated: Bool) { |
| | | super.viewDidDisappear(animated) |
| | | VoicePlayer.share().delegate = nil |
| | | } |
| | | |
| | | func restore(){ |
| | | playedIndex.removeAll() |
| | | tempViews.removeAll() |
| | | |
| | | for subView in view.subviews{ |
| | | if subView is StudyHandleView{ |
| | | subView.removeFromSuperview() |
| | | } |
| | | } |
| | | setUI() |
| | | collectionView.reloadData() |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | viewModel.selectIndex.accept(IndexPath(row: 0, section: 0)) |
| | | |
| | | collectionView.delegate = self |
| | | collectionView.dataSource = self |
| | | collectionView.backgroundColor = UIColor(hexStr: "#C3BFB3") |
| | | view.addSubview(collectionView) |
| | | if !view.subviews.contains(collectionView){ |
| | | collectionView.delegate = self |
| | | collectionView.dataSource = self |
| | | collectionView.backgroundColor = UIColor(hexStr: "#C3BFB3") |
| | | view.addSubview(collectionView) |
| | | } |
| | | |
| | | collectionView.snp.makeConstraints { make in |
| | | make.top.equalTo(self.view.safeAreaLayoutGuide.snp.top).offset(101) |
| | | make.left.equalTo(194) |
| | |
| | | make.bottom.equalToSuperview() |
| | | } |
| | | |
| | | view.addSubview(stackView) |
| | | if !view.subviews.contains(stackView){ |
| | | view.addSubview(stackView) |
| | | } |
| | | |
| | | stackView.snp.makeConstraints { make in |
| | | make.top.equalTo(self.view.safeAreaLayoutGuide.snp.top).offset(24) |
| | | make.centerX.equalToSuperview() |
| | |
| | | } |
| | | |
| | | addStackView() |
| | | VoicePlayer.share().playEnd {[weak self] in |
| | | //对已经播放过的View,进行刷新 |
| | | for sub in self!.stackView.arrangedSubviews as! [StudyHandleView]{ |
| | | if self!.playedIndex.contains(sub.tag){ |
| | | sub.resetView() |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | var lessionType:Fight_lessonType = .none |
| | | if handleView.vioceSoundUrl == weakSelf.listen1Model.subjectList[row].correct{ |
| | | lessionType = .success |
| | | VoicePlayer.share().playerEnd() |
| | | weakSelf.voicePlayer.playerEnd() |
| | | }else{ |
| | | lessionType = .fail |
| | | } |
| | |
| | | self.view.layoutIfNeeded() |
| | | }completion: { complete in |
| | | if complete{ |
| | | self.resetStackView() |
| | | self.voicePlayer.playerAt(url: self.listen1Model.subjectList[self.viewModel.selectIndex.value!.row].correct) |
| | | } |
| | | } |
| | | } |
| | | |
| | | private func resetStackView(){ |
| | | let newRow = viewModel.selectIndex.value!.row+1 |
| | | viewModel.selectIndex.accept(IndexPath(row: newRow, section: 0)) |
| | | |
| | | collectionView.reloadData() |
| | | if newRow == 4{ |
| | | if newRow == listen1Model.subjectList.count{ //防止坐标越界 |
| | | rootViewModel.answerItems[page] = listen1Model |
| | | NotificationCenter.default.post(name: NextLession_Noti, object: nil);return |
| | | } |
| | | |
| | | collectionView.reloadData() |
| | | viewModel.selectIndex.accept(IndexPath(row: newRow, section: 0)) |
| | | addStackView() |
| | | } |
| | | |
| | | override func setRx() { |
| | | // viewModel.selectIndex.subscribe(onNext: {[weak self] index in |
| | | // guard let index = index else { return } |
| | | // //判断选中是否正确逻辑 |
| | | // if self?.collectionView.dequeueReusableCell(withReuseIdentifier: "_ListenFight_lesson_1_CCell", for: index) is ListenFight_lesson_1_CCell{ |
| | | // var answerType:Fight_lessonType = .none |
| | | // answerType = .success |
| | | // switch answerType { |
| | | // case .success: |
| | | // self?.viewModel.answerType.accept(.success) |
| | | // self?.rootViewModel.correctNum += 1 |
| | | // case .fail: |
| | | // self?.viewModel.answerType.accept(.fail) |
| | | // self?.rootViewModel.errorNum += 1 |
| | | // default:break |
| | | // } |
| | | // } |
| | | // }).disposed(by: disposeBag) |
| | | } |
| | | override func setRx() {} |
| | | } |
| | | |
| | | extension HomeListenFight_lesson_2_VC:UICollectionViewDelegate{ |
| | |
| | | return min(4,listen1Model.subjectList.count) |
| | | } |
| | | } |
| | | |
| | | extension HomeListenFight_lesson_2_VC:VoicePlayerDelegate{ |
| | | func playing() {} |
| | | |
| | | func playComplete() { |
| | | //对已经播放过的View,进行刷新 |
| | | for sub in stackView.arrangedSubviews as! [StudyHandleView]{ |
| | | if playedIndex.contains(sub.tag){ |
| | | sub.resetView() |
| | | } |
| | | } |
| | | |
| | | print("--->\(page)") |
| | | |
| | | if viewModel.answerType.value == .success{ |
| | | DispatchQueue.main.asyncAfter(deadline: .now()+3) { |
| | | self.resetStackView() |
| | | self.viewModel.answerType.accept(.none) |
| | | } |
| | | } |
| | | } |
| | | } |