无故事王国
5 天以前 41aa6375f4086c3bbabd00c710c0734b25962d78
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
//
//  StudyHandleView.swift
//  DolphinEnglishLearnStudent
//
//  Created by 无故事王国 on 2024/5/23.
//
 
import UIKit
import JQTools
import AVFoundation
 
class StudyHandleView: UIView,JQNibView{
    @IBOutlet weak var view_container: UIView!
    @IBOutlet weak var btn_choose: UIButton!
    @IBOutlet weak var view_choose: UIView!
    @IBOutlet weak var btn_state: UIButton!
    @IBOutlet weak var btn_voice: UIButton!
    @IBOutlet weak var btn_pay: UIButton!
 
    var listenType:ListenType?
    private var clouse:((UIButton)->Void)?
    private var playComplete:(()->Void)?
    private var playAtClouse:((Int)->Void)?
 
    var voicePlayer = VoicePlayer.share()
    var vioceSoundUrl:String?
    var isplayend:Bool = false
 
    override func awakeFromNib() {
        super.awakeFromNib()
        btn_state.alpha = 0
        view_choose.alpha = 0
        alpha = 0
 
        btn_voice.setImage(UIImage(named: "icon_play_1"), for: .normal)
        btn_pay.setImage(UIImage(named: "icon_play"), for: .normal)
        view_container.backgroundColor = .white
 
        btn_choose.setImage(UIImage(named: "btn_radio_u"), for: .normal)
        btn_choose.setImage(UIImage(named: "btn_radio"), for: .selected)
    }
 
    func chooseClouse(callback:@escaping (UIButton)->Void){
        clouse = callback
    }
 
    func playAt(_ clouse:@escaping(Int)->Void){
        self.playAtClouse = clouse
    }
 
    func copyView()->StudyHandleView{
        let copyV = StudyHandleView.jq_loadNibView()
        copyV.bounds = self.bounds
        copyV.tag = self.tag
        copyV.vioceSoundUrl = self.vioceSoundUrl
        return copyV
    }
 
    func resetView(){
        switch listenType {
        case .lesson1,.lesson5,.game1:
            UIView.animate(withDuration: 0.25) {
                self.btn_state.setImage(UIImage(named: "icon_play"), for: .normal)
                self.btn_voice.alpha = 1
                self.btn_pay.alpha = 1
                self.btn_state.alpha = 0
            }
        case .lesson2:
            UIView.animate(withDuration: 0.25) {
                self.btn_state.setImage(UIImage(named: "icon_play"), for: .normal)
                self.btn_voice.alpha = 1
                self.btn_pay.alpha = 1
                self.btn_state.alpha = 0
                self.view_choose.alpha = 1
            }
        default:break
        }
    }
 
    func isplaying(){
        isplayend = true
        alpha =  1
        switch listenType {
        case .lesson1,.lesson5,.game1:
            UIView.animate(withDuration: 0.25) {
                self.btn_state.setImage(UIImage(named: "icon_playing")?.themeGreen, for: .normal)
                self.btn_voice.alpha = 0
                self.btn_pay.alpha = 0
                self.btn_state.alpha = 1
            }
            break
        case .lesson2:
            UIView.animate(withDuration: 0.25) {
                self.btn_state.setImage(UIImage(named: "icon_playing")?.themeGreen, for: .normal)
                self.btn_voice.alpha = 0
                self.btn_pay.alpha = 0
                self.btn_state.alpha = 1
                self.view_choose.alpha = 1
            }
 
        default:break
        }
    }
 
    @IBAction func payAction(_ sender: UIButton) {
        guard let v = vioceSoundUrl else {return}
        voicePlayer.playerAt(url: v)
        voicePlayer.playerAt(url: v) {[weak self] in
            self?.resetView()
        }
        playAtClouse?(self.tag)
        isplaying()
 
    }
 
    @IBAction func chooseAction(_ sender: UIButton) {
        sender.isSelected = !sender.isSelected
        clouse?(sender)
    }
}