| | |
| | | private var voicePlayer = VoicePlayer.share() |
| | | private var playIndex = Set<IndexPath>() //顺序播放 |
| | | private var isPlayingIndex:IndexPath? //正在播放中 |
| | | private var islisten:Bool = false |
| | | |
| | | required init(page:Int,listenNewModel:ListenNewModel){ |
| | | super.init(nibName: nil, bundle: nil) |
| | |
| | | super.viewDidLoad() |
| | | navigationItem.titleView = UIView() |
| | | playIndex.insert(IndexPath(row: 0, section: 0)) |
| | | // setAnswerStackView() |
| | | } |
| | | |
| | | func restore(){ |
| | |
| | | |
| | | } |
| | | |
| | | private func setAnswerStackView(){ |
| | | private func setAnswerStackView(force:Bool = false){ |
| | | |
| | | stackView.removeArrangedSubviews() |
| | | |
| | | 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.height.equalTo(52) |
| | | for v in stackView.arrangedSubviews{ |
| | | v.removeFromSuperview() |
| | | } |
| | | |
| | | var tempAnswerViews = [Lesson_3_AnswerView]() |
| | | for i in 0...2{ |
| | | let answerView = Lesson_3_AnswerView.jq_loadNibView() |
| | | answerView.alpha = 0 |
| | | answerView.btn_choose.addTarget(self, action: #selector(chooseAnswerAction), for: .touchUpInside) |
| | | answerView.btn_fullscreen.addTarget(self, action: #selector(fullscreenAction), for: .touchUpInside) |
| | | answerView.img_cover.contentMode = .scaleToFill |
| | | answerView.btn_choose.tag = 10+i |
| | | answerView.btn_fullscreen.tag = 20+i |
| | | answerView.imageUrl = tempImageArray[i] |
| | | answerView.img_cover.sd_setImage(with: URL(string: tempImageArray[i])) |
| | | answerView.snp.makeConstraints { make in |
| | | make.width.equalTo(85) |
| | | |
| | | 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.height.equalTo(52) |
| | | } |
| | | |
| | | UIView.animate(withDuration: 0.05 + Double(i)) { |
| | | answerView.alpha = 1 |
| | | var tempAnswerViews = [Lesson_3_AnswerView]() |
| | | for i in 0...2{ |
| | | let answerView = Lesson_3_AnswerView.jq_loadNibView() |
| | | answerView.alpha = 0 |
| | | answerView.btn_choose.addTarget(self, action: #selector(chooseAnswerAction), for: .touchUpInside) |
| | | answerView.btn_fullscreen.addTarget(self, action: #selector(fullscreenAction), for: .touchUpInside) |
| | | answerView.img_cover.contentMode = .scaleToFill |
| | | answerView.btn_choose.tag = 10+i |
| | | answerView.btn_fullscreen.tag = 20+i |
| | | answerView.imageUrl = tempImageArray[i] |
| | | answerView.img_cover.sd_setImage(with: URL(string: tempImageArray[i])) |
| | | answerView.snp.makeConstraints { make in |
| | | make.width.equalTo(85) |
| | | make.height.equalTo(52) |
| | | } |
| | | |
| | | UIView.animate(withDuration: 0.05 + Double(i)) { |
| | | answerView.alpha = 1 |
| | | } |
| | | tempAnswerViews.append(answerView) |
| | | } |
| | | tempAnswerViews.append(answerView) |
| | | tempAnswerViews.shuffle() |
| | | stackView.addArrangedSubviews(tempAnswerViews) |
| | | } |
| | | tempAnswerViews.shuffle() |
| | | stackView.addArrangedSubviews(tempAnswerViews) |
| | | } |
| | | |
| | | @objc private func chooseAnswerAction(btn:UIButton){ |
| | | |
| | | if !islisten{ |
| | | alertError(msg: "请先听题");return |
| | | } |
| | | |
| | | if isPlayingIndex != nil { |
| | | alertError(msg: "请先听题");return |
| | | } |
| | | |
| | | if rootViewModel.correctNum == 0 && !playIndex.contains(IndexPath(row: 2, section: 0)){ |
| | | if answterCount == 0 && !playIndex.contains(IndexPath(row: 2, section: 0)){ |
| | | alertError(msg: "请先听题");return |
| | | } |
| | | |
| | | if rootViewModel.correctNum == 1 && !playIndex.contains(IndexPath(row: 1, section: 1)){ |
| | | if answterCount == 1 && !playIndex.contains(IndexPath(row: 1, section: 1)){ |
| | | alertError(msg: "请先听题");return |
| | | } |
| | | |
| | | if rootViewModel.correctNum == 2 && !playIndex.contains(IndexPath(row: 2, section: 1)){ |
| | | if answterCount == 2 && !playIndex.contains(IndexPath(row: 2, section: 1)){ |
| | | alertError(msg: "请先听题");return |
| | | } |
| | | |
| | |
| | | subV?.btn_fullscreen.alpha = 0 |
| | | }completion: { _ in |
| | | DispatchQueue.main.asyncAfter(deadline: .now()+1.5) { |
| | | self.setAnswerStackView() |
| | | self.setAnswerStackView(force: true) |
| | | } |
| | | } |
| | | default:break |
| | |
| | | weakSelf.isPlayingIndex = index |
| | | |
| | | weakSelf.voicePlayer.playerEnd() |
| | | weakSelf.voicePlayer.playerAt(url: weakSelf.listenNewModel.subjectList[weakSelf.page][indexPath.row].correct) |
| | | |
| | | if indexPath.section == 1{ |
| | | weakSelf.voicePlayer.playerAt(url: weakSelf.listenNewModel.subjectList[weakSelf.page][indexPath.row + 3].correct) |
| | | }else{ |
| | | weakSelf.voicePlayer.playerAt(url: weakSelf.listenNewModel.subjectList[weakSelf.page][indexPath.row].correct) |
| | | } |
| | | |
| | | weakSelf.viewModel.selectIndex.accept(index) |
| | | //点击答案,就显示 |
| | | if (index.section == 0 && index.row == 2) || (index.section == 1 && index.row > 0){ |
| | | weakSelf.viewModel.selectIndex.accept(index) |
| | | weakSelf.setAnswerStackView() |
| | | } |
| | | weakSelf.setAnswerStackView() |
| | | |
| | | collectionView.reloadItems(at: [index]) |
| | | } |
| | |
| | | extension HomeListenFight_lesson_3_VC:VoicePlayerDelegate{ |
| | | func playComplete() { |
| | | isPlayingIndex = nil |
| | | |
| | | islisten = true |
| | | var nextRow = (viewModel.selectIndex.value?.row ?? 0) + 1 |
| | | var section = (viewModel.selectIndex.value?.section ?? 0) + 0 |
| | | |
| | |
| | | } |
| | | |
| | | func playing() { |
| | | |
| | | islisten = false |
| | | } |
| | | } |