fix
无故事王国
2024-06-18 ed382f4fb711c7c10439467a8b37442b7430e4eb
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_3_VC.swift
@@ -38,6 +38,7 @@
            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)
@@ -64,7 +65,6 @@
                        super.viewDidLoad()
                        navigationItem.titleView = UIView()
                        playIndex.insert(IndexPath(row: 0, section: 0))
//                        setAnswerStackView()
            }
            func restore(){
@@ -101,63 +101,73 @@
            }
            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
                        }
@@ -244,7 +254,7 @@
                                                            subV?.btn_fullscreen.alpha = 0
                                                }completion: { _ in
                                                            DispatchQueue.main.asyncAfter(deadline: .now()+1.5) {
                                                                        self.setAnswerStackView()
                                                                        self.setAnswerStackView(force: true)
                                                            }
                                                }
                                    default:break
@@ -283,14 +293,16 @@
                                    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])
                        }
@@ -335,7 +347,7 @@
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
@@ -359,6 +371,6 @@
            }
            func playing() {
                        islisten = false
            }
}