无故事王国
2024-06-12 21656936d06a8ea01d8d9ce4fdb1dbe0bb2e8419
DolphinEnglishLearnStudent/Moudle/Home/Listen/VC/HomeListenFight_lesson_5_VC.swift
@@ -16,6 +16,7 @@
            private var playVoiceAt:Int? //播放声音的View
            private var playVoiceRealAt:Int? //播放声音的View -被乱序后,真实Index
            var rootViewModel:HomeListenFightViewModel!
            private var voicePlayer = VoicePlayer.share()
            private lazy var collectionView:UICollectionView = {
                        let flowLayout = UICollectionViewFlowLayout()
@@ -51,6 +52,7 @@
                        super.init(nibName: nil, bundle: nil)
                        self.page = page
                        self.listen1Model = listen1Model
                        self.listen1Model.subjectList.shuffle()
            }
            required init?(coder: NSCoder) {
@@ -62,6 +64,17 @@
                        super.viewDidLoad()
                        collectionView.reloadData()
            }
            override func viewDidAppear(_ animated: Bool) {
                        super.viewDidAppear(animated)
                        voicePlayer.delegate = self
            }
            override func viewDidDisappear(_ animated: Bool) {
                        super.viewDidDisappear(animated)
                        voicePlayer.delegate = nil
            }
            override func setUI() {
@@ -99,11 +112,22 @@
            }
            override func setRx() {
//                        viewModel.selectIndex.subscribe(onNext: {indexPath in
//                                    if let index = indexPath{
//
//                                    }
//                        }).disposed(by: disposeBag)
            }
            func restore(){
                        viewModel.answerType.accept(.none)
                        answterCount  = 0
                        playVoiceAt = nil
                        playVoiceRealAt = nil
                        for subV in view.subviews{
                                    if subV is VoiceHandleView{
                                                subV.removeFromSuperview()
                                    }
                        }
                        setUI()
                        collectionView.reloadData()
            }
            private func setAnswerStackView(){
@@ -120,11 +144,10 @@
                                    }
                        }
                        var tempArray = [StudyHandleView]()
                        var tempArray = [VoiceHandleView]()
                        for (i,value) in listen1Model.subjectList.enumerated(){
                                    let answerView = StudyHandleView.jq_loadNibView()
                                    let answerView = VoiceHandleView()
                                    answerView.listenType = .lesson5
                                    answerView.view_choose.isHidden = true
                                    answerView.tag = 1000+i
                                    answerView.playAt {[weak self] index in
                                                print("--->\(index)--\(answerView.frame.origin.x / 248)")
@@ -132,7 +155,7 @@
                                                self?.playVoiceAt = index - 1000
                                                self?.showHintText(true)
                                    }
                                    answerView.vioceSoundUrl = value.correct
                                    answerView.playUrl = value.correct
                                    answerView.snp.makeConstraints { make in
                                                make.width.equalTo(159)
                                                make.height.equalTo(52)
@@ -190,21 +213,23 @@
                                    answerType = .fail
                        }
                        let tempSubV = stackView.arrangedSubviews[self.playVoiceRealAt!] as! StudyHandleView
                        let tempSubV = stackView.arrangedSubviews[self.playVoiceRealAt!] as! VoiceHandleView
                        switch answerType {
                                    case .success:
                                                answterCount += 1
                                                rootViewModel.correctNum += 1
                                                viewModel.answerType.accept(.success)
                                                DispatchQueue.main.asyncAfter(deadline: .now()+0.4) {
                                                            let copyView = tempSubV.copyView()
                                                            copyView.view_choose.isHidden = true
                                                            tempSubV.alpha = 0
                                                            let newRect = tempSubV.convert(tempSubV.bounds, to: self.view)
                                                            copyView.frame = CGRect(origin: newRect.origin, size: CGSize(width: 159, height: 52))
                                                            self.view.addSubview(copyView)
                                                let copyView = tempSubV.copyView()
                                                copyView.listenType = .lesson5
                                                copyView.playUrl = selectAnswer.correct
                                                let newRect = tempSubV.convert(tempSubV.bounds, to: self.view)
                                                copyView.frame = CGRect(origin: newRect.origin, size: CGSize(width: 159, height: 52))
                                                self.view.addSubview(copyView)
                                                tempSubV.alpha = 0
                                                DispatchQueue.main.asyncAfter(deadline: .now()+0.4) {
                                                            //获取Cell的顶部试图
                                                            let flowLayout = self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout
@@ -218,14 +243,10 @@
                                                                                    copyView.frame = CGRect(origin: newRect1.origin, size: CGSize(width: flowLayout.itemSize.width - 10 , height: 40))
                                                                        }completion: { _ in
                                                                                    copyView.playingAction()
                                                                                    self.playVoiceRealAt = nil
                                                                                    self.playVoiceAt = nil
                                                                                    if self.answterCount == 4{
                                                                                                self.rootViewModel.answerItems[self.page] = self.listen1Model
                                                                                                VoicePlayer.share().playerEnd()
                                                                                                NotificationCenter.default.post(name: NextLession_Noti, object: nil)
                                                                                    }
                                                                                    self.collectionView.reloadData()
                                                                        }
                                                            }
                                                }
@@ -275,3 +296,24 @@
            }
}
extension HomeListenFight_lesson_5_VC:VoicePlayerDelegate{
            func playComplete() {
                        for subV in stackView.arrangedSubviews as! [VoiceHandleView]{
                                    subV.resetView()
                        }
                        DispatchQueue.main.asyncAfter(deadline: .now()+0.4) {
                                    if self.answterCount >= 4{
                                                self.rootViewModel.answerItems[self.page] = self.listen1Model
                                                self.voicePlayer.playerEnd()
                                                NotificationCenter.default.post(name: NextLession_Noti, object: nil)
                                    }
                        }
            }
            func playing() {
            }
}