StoryPlayView.m
8.2 KB
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
//
// StoryPlayView.m
// DreamSleep
//
// Created by peter on 2022/10/21.
//
#import "StoryPlayView.h"
#import "DSSlider.h"
@interface StoryPlayView () <UIGestureRecognizerDelegate>
@property (nonatomic, strong) UIButton *dismissBtn;
@property (nonatomic, strong) UIImageView *audioPicIV;
@property (nonatomic, strong) UILabel *audioNameLab;
@property (nonatomic, strong) DSSlider *progressV;
@property (nonatomic, strong) UILabel *proLeftLb;
@property (nonatomic, strong) UILabel *proRightLb;
@property (nonatomic, strong) UIButton *playerBtn;
@property (nonatomic, strong) UITapGestureRecognizer *tapGR;
@end
@implementation StoryPlayView
- (instancetype)initWithDelegate:(id<StoryPlayViewDelegate>)delegate {
if (self = [super init]) {
self.delegate = delegate;
self.dk_backgroundColorPicker = DKColorPickerWithKey(VCViewBG);
[self addSubview:self.dismissBtn];
[self addSubview:self.audioPicIV];
[self addSubview:self.audioNameLab];
[self addSubview:self.progressV];
[self addSubview:self.proLeftLb];
[self addSubview:self.proRightLb];
[self addSubview:self.playerBtn];
[self.audioPicIV mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self);
make.width.height.equalTo(@144);
make.top.equalTo(self).offset(198);
}];
[self.audioNameLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.audioPicIV.mas_bottom).offset(18);
make.centerX.equalTo(self.mas_centerX);
make.left.equalTo(self.mas_left);
make.right.equalTo(self.mas_right);
}];
[self.progressV mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.mas_left).offset(38);
make.right.equalTo(self.mas_right).offset(-37);
make.height.equalTo(@15);
make.top.equalTo(self.audioNameLab.mas_bottom).offset(160);
}];
[self.proLeftLb mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.progressV.mas_left);
make.top.equalTo(self.progressV.mas_bottom).offset(6);
make.height.equalTo(@17);
make.width.equalTo(@100);
}];
[self.proRightLb mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.progressV.mas_right);
make.top.equalTo(self.progressV.mas_bottom).offset(6);
make.height.equalTo(@17);
make.width.equalTo(@100);
}];
[self.playerBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.mas_centerX);
make.width.equalTo(@50);
make.height.equalTo(@50);
make.top.equalTo(self.progressV.mas_bottom).offset(63);
}];
}
return self;
}
#pragma mark - public
- (void)updatePlayerView:(SubAudioModel *)model {
[self.audioPicIV yy_setImageWithURL:[NSURL URLWithString:model.audio_pic] placeholder:[UIImage imageNamed:@"basicPlaceholder"]];
self.audioNameLab.text = model.audio_name;
}
- (void)updatePlayingState:(BOOL)isPlaying {
self.playerBtn.selected = isPlaying;
}
- (void)updateProgress:(float)progress currentTime:(NSString *)currentTime totalTime:(NSString *)totalTime {
self.progressV.value = progress;
self.proLeftLb.text = currentTime;
self.proRightLb.text = totalTime;
}
#pragma mark - private
- (void)dismiss {
if (self.delegate && [self.delegate respondsToSelector:@selector(stopAudioAndDismiss)]) {
[self.delegate stopAudioAndDismiss];
}
}
- (void)playAction {
if (self.delegate && [self.delegate respondsToSelector:@selector(playOrPauseControl)]) {
[self.delegate playOrPauseControl];
}
}
#pragma mark - 滑块事件
- (void)sliderValueChanged:(UISlider *)sender {
if (self.delegate && [self.delegate respondsToSelector:@selector(didSliderValueChange:)]) {
[self.delegate didSliderValueChange:sender.value];
}
}
- (void)sliderTouchDown:(UISlider *)sender {
self.tapGR.enabled = NO;
if (self.delegate && [self.delegate respondsToSelector:@selector(didSliderTouchBegan:)]) {
[self.delegate didSliderTouchBegan:sender.value];
}
}
- (void)sliderTouchUpInSide:(UISlider *)sender {
self.tapGR.enabled = YES;
if (self.delegate && [self.delegate respondsToSelector:@selector(didSliderTouchEnded:)]) {
[self.delegate didSliderTouchEnded:sender.value];
}
}
#pragma mark - UIGestureRecognizerDelegate
- (void)actionTapGesture:(UITapGestureRecognizer *)sender {
CGPoint touchPoint = [sender locationInView:self.progressV];
float value = (self.progressV.maximumValue - self.progressV.minimumValue) * (touchPoint.x / self.progressV.width);
[self.progressV setValue:value animated:YES];
if (self.delegate && [self.delegate respondsToSelector:@selector(didSliderTouchEnded:)]) {
[self.delegate didSliderTouchEnded:value];
}
}
#pragma mark - lazy
- (UIButton *)dismissBtn {
if (!_dismissBtn) {
_dismissBtn = [[UIButton alloc] initWithFrame:CGRectMake(15, kStatusBarHeight + 19, 30, 30)];
[_dismissBtn dk_setImage:DKImagePickerWithNames(@"home_close", @"dk_home_close", @"home_close") forState:UIControlStateNormal];
[_dismissBtn addTarget:self action:@selector(dismiss) forControlEvents:UIControlEventTouchUpInside];
}
return _dismissBtn;
}
- (UIImageView *)audioPicIV {
if (!_audioPicIV) {
_audioPicIV = [UIImageView new];
[_audioPicIV cornerRadius:72.0];
_audioPicIV.dk_alphaPicker = DKAlphaPickerWithAlphas(1.0, .5, .5);
}
return _audioPicIV;
}
- (UILabel *)audioNameLab {
if (!_audioNameLab) {
_audioNameLab = [UILabel labWithFont:BoldFont(16)];
_audioNameLab.textAlignment = NSTextAlignmentCenter;
_audioNameLab.dk_textColorPicker = DKColorPickerWithColors(MainTextColor, ColorFromHex(0xE8E9E9), DSWhite);
}
return _audioNameLab;
}
- (DSSlider *)progressV {
if (!_progressV) {
_progressV = [DSSlider new];
[_progressV cornerRadius:2.0];
_progressV.minimumTrackTintColor = BrandColor;
_progressV.dk_maximumTrackTintColorPicker = DKColorPickerWithColors(ColorFromHex(0xE3E1E1), AlertDarkColor, DSWhite);
[_progressV setThumbImage:[UIImage imageNamed:@"muse_slider_thumbImage"] forState:UIControlStateNormal];
[_progressV addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];
[_progressV addTarget:self action:@selector(sliderTouchDown:) forControlEvents:UIControlEventTouchDown];
[_progressV addTarget:self action:@selector(sliderTouchUpInSide:) forControlEvents:UIControlEventTouchUpInside];
// 为UISlider添加点击事件
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(actionTapGesture:)];
tapGesture.delegate = self;
[_progressV addGestureRecognizer:tapGesture];
self.tapGR = tapGesture;
}
return _progressV;
}
- (UILabel *)proLeftLb {
if (!_proLeftLb) {
_proLeftLb = [UILabel labWithFont:SysFont(12)];
_proLeftLb.textAlignment = NSTextAlignmentLeft;
_proLeftLb.dk_textColorPicker = DKColorPickerWithColors(ColorFromHex(0xAAAAAA), ColorFromHex(0x5A6073), DSWhite);
}
return _proLeftLb;
}
- (UILabel *)proRightLb {
if (!_proRightLb) {
_proRightLb = [UILabel labWithFont:SysFont(12)];
_proRightLb.textAlignment = NSTextAlignmentRight;
_proRightLb.dk_textColorPicker = DKColorPickerWithColors(ColorFromHex(0xAAAAAA), ColorFromHex(0x5A6073), DSWhite);
}
return _proRightLb;
}
- (UIButton *)playerBtn {
if (!_playerBtn) {
_playerBtn = [UIButton new];
[_playerBtn addTarget:self action:@selector(playAction) forControlEvents:UIControlEventTouchUpInside];
[_playerBtn dk_setBackgroundImage:DKImagePickerWithNames(@"audio_play_icon", @"dk_audio_play_icon", @"dk_audio_play_icon") forState:UIControlStateNormal];
[_playerBtn dk_setBackgroundImage:DKImagePickerWithNames(@"audio_pause", @"dk_audio_pause", @"dk_audio_pause") forState:UIControlStateSelected];
}
return _playerBtn;
}
@end