| | |
| | | super.viewDidLoad() |
| | | navigationItem.titleView = UIView() |
| | | playIndex.insert(IndexPath(row: 0, section: 0)) |
| | | listenNewModel.subjectList[page][0].isQuestion = 1 |
| | | listenNewModel.subjectList[page][1].isQuestion = 1 |
| | | listenNewModel.subjectList[page][3].isQuestion = 1 |
| | | } |
| | | |
| | | func restore(){ |
| | |
| | | collectionView.delegate = self |
| | | collectionView.dataSource = self |
| | | collectionView.showsVerticalScrollIndicator = false |
| | | collectionView.contentInset = UIEdgeInsets(top: 33, left: 0, bottom: 0, right: 0) |
| | | collectionView.backgroundColor = .clear |
| | | view.addSubview(collectionView) |
| | | } |
| | |
| | | v.removeFromSuperview() |
| | | } |
| | | |
| | | |
| | | if isPlayingIndex == IndexPath(row: 2, section: 0) || isPlayingIndex == IndexPath(row: 1, section: 1) || isPlayingIndex == IndexPath(row: 2, section: 1) || !force{ |
| | | var tempImageArray = [String]() |
| | | |
| | | tempImageArray.append(listenNewModel.subjectList[page][2].img) |
| | | tempImageArray.append(listenNewModel.subjectList[page][4].img) |
| | | tempImageArray.append(listenNewModel.subjectList[page][5].img) |
| | |
| | | view.addSubview(stackView) |
| | | stackView.snp.makeConstraints { make in |
| | | make.right.equalToSuperview().offset(-82) |
| | | make.centerY.equalToSuperview() |
| | | make.centerY.equalToSuperview().offset(10) |
| | | make.height.equalTo(52) |
| | | } |
| | | |
| | |
| | | } |
| | | tempAnswerViews.shuffle() |
| | | stackView.addArrangedSubviews(tempAnswerViews) |
| | | } |
| | | } |
| | | |
| | | @objc private func chooseAnswerAction(btn:UIButton){ |
| | |
| | | alertError(msg: "请先听题");return |
| | | } |
| | | |
| | | if isPlayingIndex != nil { |
| | | alertError(msg: "请先听题");return |
| | | } |
| | | // if isPlayingIndex != nil { |
| | | // alertError(msg: "请先听题");return |
| | | // } |
| | | |
| | | if answterCount == 0 && !playIndex.contains(IndexPath(row: 2, section: 0)){ |
| | | alertError(msg: "请先听题");return |
| | |
| | | } |
| | | |
| | | if subV?.imageUrl == listenNewModel.subjectList[page][valueIndex].img{ |
| | | listenNewModel.subjectList[page][valueIndex].isAnster = true |
| | | answerType = .success |
| | | subV?.alpha = 0 |
| | | voicePlayer.playSuccessVoice() |
| | | }else{ |
| | | answerType = .fail |
| | |
| | | } |
| | | |
| | | guard ansterIndePath != nil else {return} |
| | | self.viewModel.selectIndex.accept(nil) |
| | | |
| | | if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_ListenFight_lesson_3_CCell", for: ansterIndePath!) as? ListenFight_lesson_3_CCell{ |
| | | var newFrame = cell.img_cover.convert(cell.img_cover.bounds, to: self.view) |
| | | newFrame.origin.x += 0 |
| | | newFrame.origin.y += 0 |
| | | |
| | | let successImage = UIImageView(image: UIImage(named: "icon_success")) |
| | | successImage.bounds = CGRect(x: 0, y: 0, width: 75, height: 75) |
| | | successImage.center = newFrame.center |
| | | successImage.transform = .init(scaleX: 0.1, y: 0.1) |
| | | successImage.alpha = 0 |
| | | successImage.layoutIfNeeded() |
| | | self.view.addSubview(successImage) |
| | | UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.4, initialSpringVelocity: 0.4) { |
| | | successImage.transform = .init(scaleX: 1.0, y: 1.0) |
| | | successImage.alpha = 1 |
| | | } |
| | | |
| | | UIView.animate(withDuration: 0.5, delay: 3) { |
| | | successImage.transform = .init(scaleX: 0.1, y: 0.1) |
| | | successImage.alpha = 0 |
| | | }completion: { _ in |
| | | successImage.removeFromSuperview() |
| | | } |
| | | |
| | | UIView.animate(withDuration: 0.4) { |
| | | copyView?.frame = newFrame |
| | | } completion: { _ in |
| | | self.answterCount += 1 |
| | | |
| | | let cell = self.collectionView.cellForItem(at: self.viewModel.selectIndex.value!) as! ListenFight_lesson_3_CCell |
| | | self.isPlayingIndex = self.viewModel.selectIndex.value |
| | | cell.isPlaying(isplaying: true) |
| | | |
| | | self.voicePlayer.playerAt(url: self.listenNewModel.subjectList[self.page][valueIndex].correct) |
| | | |
| | | let teamId = self.listenNewModel.data?.id.components(separatedBy: ",")[self.page] |
| | | let answerId = self.listenNewModel.subjectList[self.page][valueIndex].id |
| | | self.rootViewModel.insertCorrectAnswer(teamId: teamId, answerId: answerId) |
| | | |
| | | for v in self.stackView.arrangedSubviews{ |
| | | v.removeFromSuperview() |
| | | } |
| | | |
| | | DispatchQueue.main.asyncAfter(deadline: .now()+1.0) { |
| | | self.setAnswerStackView() |
| | | self.viewModel.selectIndex.accept(nil) |
| | | let v = self.rootViewModel.answerCount.value + 1 |
| | | self.rootViewModel.answerCount.accept(v) |
| | | self.collectionView.reloadData() |
| | |
| | | subV?.btn_fullscreen.alpha = 0 |
| | | }completion: { _ in |
| | | DispatchQueue.main.asyncAfter(deadline: .now()+1.5) { |
| | | self.setAnswerStackView(force: true) |
| | | self.islisten = false |
| | | for v in self.stackView.arrangedSubviews{ |
| | | v.removeFromSuperview() |
| | | } |
| | | } |
| | | } |
| | | default:break |
| | |
| | | if section == 0{ |
| | | return CGSize.zero |
| | | } |
| | | return CGSizeMake(JQ_ScreenW, 100) |
| | | return CGSizeMake(JQ_ScreenW, 65) |
| | | } |
| | | } |
| | | |
| | |
| | | cell.canClick(playIndex.contains(indexPath)) |
| | | cell.palyVoiceAt {[weak self] index in |
| | | guard let weakSelf = self else { return } |
| | | |
| | | weakSelf.isPlayingIndex = index |
| | | weakSelf.viewModel.selectIndex.accept(index) |
| | | |
| | | weakSelf.voicePlayer.playerEnd() |
| | | |
| | |
| | | weakSelf.voicePlayer.playerAt(url: weakSelf.listenNewModel.subjectList[weakSelf.page][indexPath.row].correct) |
| | | } |
| | | |
| | | weakSelf.viewModel.selectIndex.accept(index) |
| | | //点击答案,就显示 |
| | | weakSelf.setAnswerStackView() |
| | | |
| | | if index == IndexPath(row: 2, section: 0) || index == IndexPath(row: 1, section: 1) || index == IndexPath(row: 2, section: 1){ |
| | | |
| | | var model:Listen1SubModel? |
| | | if indexPath.section == 0{ |
| | | model = weakSelf.listenNewModel.subjectList[weakSelf.page][indexPath.row] |
| | | } |
| | | |
| | | if indexPath.section == 1{ |
| | | model = weakSelf.listenNewModel.subjectList[weakSelf.page][indexPath.row + 3] |
| | | } |
| | | |
| | | if model?.isAnster == false{ |
| | | //点击答案,就显示 |
| | | weakSelf.setAnswerStackView() |
| | | } |
| | | } |
| | | |
| | | collectionView.reloadItems(at: [index]) |
| | | } |