Commit f20edd04 cgx

完成定时播放功能

1 个父辈 f283b9c3
...@@ -153,6 +153,7 @@ ...@@ -153,6 +153,7 @@
D0E660022807B5AE006562F2 /* SafeSleepRequestModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D0E660002807B5AE006562F2 /* SafeSleepRequestModel.m */; }; D0E660022807B5AE006562F2 /* SafeSleepRequestModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D0E660002807B5AE006562F2 /* SafeSleepRequestModel.m */; };
D0E660052807D02C006562F2 /* UserRequestModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D0E660042807D02C006562F2 /* UserRequestModel.m */; }; D0E660052807D02C006562F2 /* UserRequestModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D0E660042807D02C006562F2 /* UserRequestModel.m */; };
D0E6600828080F97006562F2 /* SystemSetController.m in Sources */ = {isa = PBXBuildFile; fileRef = D0E6600728080F97006562F2 /* SystemSetController.m */; }; D0E6600828080F97006562F2 /* SystemSetController.m in Sources */ = {isa = PBXBuildFile; fileRef = D0E6600728080F97006562F2 /* SystemSetController.m */; };
D0E6F1FD28290128004150E5 /* TimingView.m in Sources */ = {isa = PBXBuildFile; fileRef = D0E6F1FC28290128004150E5 /* TimingView.m */; };
D0F808F52803D4E70097899F /* Track.m in Sources */ = {isa = PBXBuildFile; fileRef = D0F808F32803D4E70097899F /* Track.m */; }; D0F808F52803D4E70097899F /* Track.m in Sources */ = {isa = PBXBuildFile; fileRef = D0F808F32803D4E70097899F /* Track.m */; };
D0F808FE280421C20097899F /* ThreeMinuteController.m in Sources */ = {isa = PBXBuildFile; fileRef = D0F808FD280421C20097899F /* ThreeMinuteController.m */; }; D0F808FE280421C20097899F /* ThreeMinuteController.m in Sources */ = {isa = PBXBuildFile; fileRef = D0F808FD280421C20097899F /* ThreeMinuteController.m */; };
D0F8090428042A0B0097899F /* SafeSleepCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D0F8090328042A0B0097899F /* SafeSleepCell.m */; }; D0F8090428042A0B0097899F /* SafeSleepCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D0F8090328042A0B0097899F /* SafeSleepCell.m */; };
...@@ -456,6 +457,8 @@ ...@@ -456,6 +457,8 @@
D0E660042807D02C006562F2 /* UserRequestModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserRequestModel.m; sourceTree = "<group>"; }; D0E660042807D02C006562F2 /* UserRequestModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UserRequestModel.m; sourceTree = "<group>"; };
D0E6600628080F97006562F2 /* SystemSetController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SystemSetController.h; sourceTree = "<group>"; }; D0E6600628080F97006562F2 /* SystemSetController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SystemSetController.h; sourceTree = "<group>"; };
D0E6600728080F97006562F2 /* SystemSetController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SystemSetController.m; sourceTree = "<group>"; }; D0E6600728080F97006562F2 /* SystemSetController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SystemSetController.m; sourceTree = "<group>"; };
D0E6F1FB28290128004150E5 /* TimingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TimingView.h; sourceTree = "<group>"; };
D0E6F1FC28290128004150E5 /* TimingView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TimingView.m; sourceTree = "<group>"; };
D0F808F32803D4E70097899F /* Track.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Track.m; sourceTree = "<group>"; }; D0F808F32803D4E70097899F /* Track.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Track.m; sourceTree = "<group>"; };
D0F808F42803D4E70097899F /* Track.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Track.h; sourceTree = "<group>"; }; D0F808F42803D4E70097899F /* Track.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Track.h; sourceTree = "<group>"; };
D0F808FC280421C20097899F /* ThreeMinuteController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ThreeMinuteController.h; sourceTree = "<group>"; }; D0F808FC280421C20097899F /* ThreeMinuteController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ThreeMinuteController.h; sourceTree = "<group>"; };
...@@ -1068,6 +1071,8 @@ ...@@ -1068,6 +1071,8 @@
D0F9AC5D282660CC00FD7A3B /* MusicPlayerView.m */, D0F9AC5D282660CC00FD7A3B /* MusicPlayerView.m */,
D0AE1E3328281B6F008CEF27 /* TimerProxy.h */, D0AE1E3328281B6F008CEF27 /* TimerProxy.h */,
D0AE1E3428281B6F008CEF27 /* TimerProxy.m */, D0AE1E3428281B6F008CEF27 /* TimerProxy.m */,
D0E6F1FB28290128004150E5 /* TimingView.h */,
D0E6F1FC28290128004150E5 /* TimingView.m */,
); );
path = Home; path = Home;
sourceTree = "<group>"; sourceTree = "<group>";
...@@ -1558,6 +1563,7 @@ ...@@ -1558,6 +1563,7 @@
D0930F1A2801874B006B497A /* UIViewController+Swizzling.m in Sources */, D0930F1A2801874B006B497A /* UIViewController+Swizzling.m in Sources */,
D01C9D6728167F9D00163567 /* InfoModifyAlertView.m in Sources */, D01C9D6728167F9D00163567 /* InfoModifyAlertView.m in Sources */,
D0BB9AA728164DFB00DB209E /* NickNameController.m in Sources */, D0BB9AA728164DFB00DB209E /* NickNameController.m in Sources */,
D0E6F1FD28290128004150E5 /* TimingView.m in Sources */,
D08F79DF281A1838000D99DD /* TZPhotoPreviewCell.m in Sources */, D08F79DF281A1838000D99DD /* TZPhotoPreviewCell.m in Sources */,
D0F808FE280421C20097899F /* ThreeMinuteController.m in Sources */, D0F808FE280421C20097899F /* ThreeMinuteController.m in Sources */,
D07A4B27280E9BAA00BA0EC0 /* AccountController.m in Sources */, D07A4B27280E9BAA00BA0EC0 /* AccountController.m in Sources */,
......
...@@ -235,11 +235,11 @@ ...@@ -235,11 +235,11 @@
} }
#pragma mark - UIPickerViewDataSource && UIPickerViewDelegate #pragma mark - UIPickerViewDataSource && UIPickerViewDelegate
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView{ - (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView {
return 1; return 1;
} }
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return self.minuteDatas.count; return self.minuteDatas.count;
} }
......
...@@ -201,6 +201,12 @@ ...@@ -201,6 +201,12 @@
} }
} }
- (void)timerHasCountDone {
if (self.streamState == kFsAudioStreamPlaying) {
[self.audioStream pause];
}
}
#pragma mark - 隐藏导航栏 #pragma mark - 隐藏导航栏
- (BOOL)isShowNavigationBar { - (BOOL)isShowNavigationBar {
return YES; return YES;
......
...@@ -24,6 +24,9 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -24,6 +24,9 @@ NS_ASSUME_NONNULL_BEGIN
/// 上一首、播放、下一首事件 /// 上一首、播放、下一首事件
/// @param item item /// @param item item
- (void)playControlActionWithItem:(UIButton *)item; - (void)playControlActionWithItem:(UIButton *)item;
/// 定时器设置时间已经到了
- (void)timerHasCountDone;
@end @end
/// 音频播放页面 /// 音频播放页面
...@@ -31,6 +34,8 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -31,6 +34,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic, weak) id<MusicPlayerViewDelegate> delegate; @property (nonatomic, weak) id<MusicPlayerViewDelegate> delegate;
@property (nonatomic, strong) SubAudioModel *audioModel;
/// 播放状态 /// 播放状态
@property (nonatomic, assign) BOOL isPlaying; @property (nonatomic, assign) BOOL isPlaying;
/// 音频播放模式 /// 音频播放模式
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#import "MusicPlayerView.h" #import "MusicPlayerView.h"
#import "SPButton.h" #import "SPButton.h"
#import "TimingView.h"
@interface MusicPlayerView () <UIGestureRecognizerDelegate> @interface MusicPlayerView () <UIGestureRecognizerDelegate>
@property (nonatomic, strong) UIButton *dismissBtn; @property (nonatomic, strong) UIButton *dismissBtn;
...@@ -19,9 +20,15 @@ ...@@ -19,9 +20,15 @@
@property (nonatomic, strong) UIButton *leftPlayBtn; @property (nonatomic, strong) UIButton *leftPlayBtn;
@property (nonatomic, strong) UIButton *rightPlayBtn; @property (nonatomic, strong) UIButton *rightPlayBtn;
@property (nonatomic,strong) SPButton *playerListBtn; @property (nonatomic, strong) SPButton *playerListBtn;
@property (nonatomic,strong) SPButton *circleBtn; @property (nonatomic, strong) SPButton *playModeBtn;
@property (nonatomic,strong) SPButton *closeBtn; @property (nonatomic, strong) SPButton *timeCloseBtn;
@property (nonatomic, strong) TimingView *timingView;
@property (nonatomic, assign) NSInteger minuteIndex;
@property (nonatomic, assign) NSInteger countTime;
@property (nonatomic, assign) NSInteger totalTime;
@property (nonatomic, strong) NSTimer *timer;
@end @end
@implementation MusicPlayerView { @implementation MusicPlayerView {
...@@ -30,94 +37,109 @@ ...@@ -30,94 +37,109 @@
- (instancetype)initWithFrame:(CGRect)frame { - (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)]) { if (self = [super initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)]) {
self.minuteIndex = 0;
self.countTime = 60;
self.dk_backgroundColorPicker = DKColorPickerWithKey(VCViewBG); 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 addSubview:self.leftPlayBtn];
[self addSubview:self.rightPlayBtn];
[self addSubview:self.playerListBtn];
[self addSubview:self.circleBtn];
[self addSubview:self.closeBtn];
[self.audioPicIV mas_makeConstraints:^(MASConstraintMaker *make) { [self buildInterface];
make.centerX.equalTo(self.mas_centerX);
make.width.height.equalTo(@144);
make.top.equalTo(self.mas_top).offset(160);
}];
[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.bottom.equalTo(self.playerBtn.mas_top).offset(-40);
}];
[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.bottom.equalTo(self.playerListBtn.mas_top).offset(-25);
}];
[self.leftPlayBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.playerBtn.mas_centerY);
make.width.equalTo(@30);
make.height.equalTo(@30);
make.right.equalTo(self.playerBtn.mas_left).offset(-60);
}];
[self.rightPlayBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.playerBtn.mas_centerY);
make.width.equalTo(@30);
make.height.equalTo(@30);
make.left.equalTo(self.playerBtn.mas_right).offset(60);
}];
[self.playerListBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.equalTo(self.mas_bottom).offset(-36);
make.left.equalTo(self.mas_left).offset(23);
make.width.equalTo(@80);
make.height.equalTo(@60);
}];
[self.circleBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.equalTo(self.mas_bottom).offset(-36);
make.centerX.equalTo(self.mas_centerX);
make.width.equalTo(@60);
make.height.equalTo(@60);
}];
[self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.equalTo(self.mas_bottom).offset(-36);
make.right.equalTo(self.mas_right).offset(-23);
make.width.equalTo(@80);
make.height.equalTo(@60);
}];
} }
return self; return self;
} }
- (void)buildInterface {
[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 addSubview:self.leftPlayBtn];
[self addSubview:self.rightPlayBtn];
[self addSubview:self.playerListBtn];
[self addSubview:self.playModeBtn];
[self addSubview:self.timeCloseBtn];
[self.audioPicIV mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.mas_centerX);
make.width.height.equalTo(@144);
make.top.equalTo(self.mas_top).offset(160);
}];
[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.bottom.equalTo(self.playerBtn.mas_top).offset(-40);
}];
[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.bottom.equalTo(self.playerListBtn.mas_top).offset(-25);
}];
[self.leftPlayBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.playerBtn.mas_centerY);
make.width.equalTo(@30);
make.height.equalTo(@30);
make.right.equalTo(self.playerBtn.mas_left).offset(-60);
}];
[self.rightPlayBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.playerBtn.mas_centerY);
make.width.equalTo(@30);
make.height.equalTo(@30);
make.left.equalTo(self.playerBtn.mas_right).offset(60);
}];
[self.playerListBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.equalTo(self.mas_bottom).offset(-36);
make.left.equalTo(self.mas_left).offset(23);
make.width.equalTo(@80);
make.height.equalTo(@60);
}];
[self.playModeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.equalTo(self.mas_bottom).offset(-36);
make.centerX.equalTo(self.mas_centerX);
make.width.equalTo(@60);
make.height.equalTo(@60);
}];
[self.timeCloseBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.equalTo(self.mas_bottom).offset(-36);
make.right.equalTo(self.mas_right).offset(-23);
make.width.equalTo(@80);
make.height.equalTo(@60);
}];
}
- (void)dealloc {
[self.timer invalidate];
self.timer = nil;
[self.timingView removeFromSuperview];
self.timingView = nil;
}
- (void)dismiss { - (void)dismiss {
[self.ds_viewController dismissViewControllerAnimated:YES completion:nil]; [self.ds_viewController dismissViewControllerAnimated:YES completion:nil];
} }
- (void)updatePlayerView:(SubAudioModel *)model { - (void)updatePlayerView:(SubAudioModel *)model {
_audioModel = model;
[self.audioPicIV yy_setImageWithURL:[NSURL URLWithString:model.audio_pic] placeholder:[UIImage imageNamed:@"basicPlaceholder"]]; [self.audioPicIV yy_setImageWithURL:[NSURL URLWithString:model.audio_pic] placeholder:[UIImage imageNamed:@"basicPlaceholder"]];
self.audioNameLab.text = model.audio_name; self.audioNameLab.text = model.audio_name;
} }
...@@ -128,7 +150,13 @@ ...@@ -128,7 +150,13 @@
self.proRightLb.text = totalTime; self.proRightLb.text = totalTime;
} }
- (void)circelBtnClick:(UIButton *)sender { #pragma mark - 点击播放列表
- (void)didClickPlaylistAction:(UIButton *)sender {
}
#pragma mark - 切换播放模式
- (void)switchPlayModeAction:(UIButton *)sender {
SoundPlayMode mode = sender.tag; SoundPlayMode mode = sender.tag;
NSString *title = sender.titleLabel.text; NSString *title = sender.titleLabel.text;
NSString *normalImgName = @"single_play"; NSString *normalImgName = @"single_play";
...@@ -154,16 +182,19 @@ ...@@ -154,16 +182,19 @@
[sender dk_setImage:DKImagePickerWithNames(normalImgName, dkImgName, normalImgName) forState:UIControlStateNormal]; [sender dk_setImage:DKImagePickerWithNames(normalImgName, dkImgName, normalImgName) forState:UIControlStateNormal];
} }
#pragma mark - 点击定时器
- (void)didClickTimerAction:(UIButton *)sender {
[self.timingView display];
}
#pragma mark - 滑块事件 #pragma mark - 滑块事件
- (void)progresssBtnClick:(UISlider *)sender { - (void)sliderValueChanged:(UISlider *)sender {
DSLog(@"progresssBtnClick:%f", sender.value);
if (self.delegate && [self.delegate respondsToSelector:@selector(didSliderValueChange:)]) { if (self.delegate && [self.delegate respondsToSelector:@selector(didSliderValueChange:)]) {
[self.delegate didSliderValueChange:sender.value]; [self.delegate didSliderValueChange:sender.value];
} }
} }
- (void)sliderTouchDown:(UISlider *)sender { - (void)sliderTouchDown:(UISlider *)sender {
DSLog(@"sliderTouchDown");
_tapGesture.enabled = NO; _tapGesture.enabled = NO;
if (self.delegate && [self.delegate respondsToSelector:@selector(didSliderTouchBegan:)]) { if (self.delegate && [self.delegate respondsToSelector:@selector(didSliderTouchBegan:)]) {
[self.delegate didSliderTouchBegan:sender.value]; [self.delegate didSliderTouchBegan:sender.value];
...@@ -171,19 +202,12 @@ ...@@ -171,19 +202,12 @@
} }
- (void)sliderTouchUpInSide:(UISlider *)sender { - (void)sliderTouchUpInSide:(UISlider *)sender {
DSLog(@"sliderTouchUpInSide");
_tapGesture.enabled = YES; _tapGesture.enabled = YES;
if (self.delegate && [self.delegate respondsToSelector:@selector(didSliderTouchEnded:)]) { if (self.delegate && [self.delegate respondsToSelector:@selector(didSliderTouchEnded:)]) {
[self.delegate didSliderTouchEnded:sender.value]; [self.delegate didSliderTouchEnded:sender.value];
} }
} }
- (void)playControlAction:(UIButton *)sender {
if (self.delegate && [self.delegate respondsToSelector:@selector(playControlActionWithItem:)]) {
[self.delegate playControlActionWithItem:sender];
}
}
#pragma mark - UIGestureRecognizerDelegate #pragma mark - UIGestureRecognizerDelegate
- (void)actionTapGesture:(UITapGestureRecognizer *)sender { - (void)actionTapGesture:(UITapGestureRecognizer *)sender {
CGPoint touchPoint = [sender locationInView:self.progressV]; CGPoint touchPoint = [sender locationInView:self.progressV];
...@@ -193,8 +217,13 @@ ...@@ -193,8 +217,13 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(didSliderTouchEnded:)]) { if (self.delegate && [self.delegate respondsToSelector:@selector(didSliderTouchEnded:)]) {
[self.delegate didSliderTouchEnded:value]; [self.delegate didSliderTouchEnded:value];
} }
}
DSLog(@"actionTapGestureactionTapGesture:%f", value);
#pragma mark - 播放控制事件
- (void)playControlAction:(UIButton *)sender {
if (self.delegate && [self.delegate respondsToSelector:@selector(playControlActionWithItem:)]) {
[self.delegate playControlActionWithItem:sender];
}
} }
#pragma mark - public #pragma mark - public
...@@ -204,7 +233,22 @@ ...@@ -204,7 +233,22 @@
} }
- (SoundPlayMode)mode { - (SoundPlayMode)mode {
return self.circleBtn.tag; return self.playModeBtn.tag;
}
#pragma mark - others
- (NSString *)formattimewithtimeinterval:(NSTimeInterval)timeinterval {
int minute = 0, hour = 0, secend = timeinterval;
minute = (secend % 3600)/60;
hour = secend / 3600;
secend = secend % 60;
if (hour == 0) {
return [NSString stringWithFormat:@"%02d:%02d", minute, secend];
} else if (minute == 0){
return [NSString stringWithFormat:@"%02d",secend];
} else {
return [NSString stringWithFormat:@"%02d:%02d:%02d", hour, minute, secend];
}
} }
#pragma mark - lazy #pragma mark - lazy
...@@ -242,7 +286,7 @@ ...@@ -242,7 +286,7 @@
_progressV.minimumTrackTintColor = BrandColor; _progressV.minimumTrackTintColor = BrandColor;
_progressV.dk_maximumTrackTintColorPicker = DKColorPickerWithColors(ColorFromHex(0xE3E1E1), ColorFromHex(0x131724), DSWhite); _progressV.dk_maximumTrackTintColorPicker = DKColorPickerWithColors(ColorFromHex(0xE3E1E1), ColorFromHex(0x131724), DSWhite);
[_progressV setThumbImage:[UIImage imageNamed:@"muse_slider_thumbImage"] forState:UIControlStateNormal]; [_progressV setThumbImage:[UIImage imageNamed:@"muse_slider_thumbImage"] forState:UIControlStateNormal];
[_progressV addTarget:self action:@selector(progresssBtnClick:) forControlEvents:UIControlEventValueChanged]; [_progressV addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];
[_progressV addTarget:self action:@selector(sliderTouchDown:) forControlEvents:UIControlEventTouchDown]; [_progressV addTarget:self action:@selector(sliderTouchDown:) forControlEvents:UIControlEventTouchDown];
[_progressV addTarget:self action:@selector(sliderTouchUpInSide:) forControlEvents:UIControlEventTouchUpInside]; [_progressV addTarget:self action:@selector(sliderTouchUpInSide:) forControlEvents:UIControlEventTouchUpInside];
...@@ -307,7 +351,7 @@ ...@@ -307,7 +351,7 @@
if (!_playerListBtn) { if (!_playerListBtn) {
_playerListBtn = [[SPButton alloc] initWithImagePosition:SPButtonImagePositionTop]; _playerListBtn = [[SPButton alloc] initWithImagePosition:SPButtonImagePositionTop];
_playerListBtn.imageTitleSpace = 2; _playerListBtn.imageTitleSpace = 2;
[_playerListBtn addTarget:self action:@selector(playerListBtnClick:) forControlEvents:UIControlEventTouchUpInside]; [_playerListBtn addTarget:self action:@selector(didClickPlaylistAction:) forControlEvents:UIControlEventTouchUpInside];
[_playerListBtn setTitleColor:SmallTextColor forState:UIControlStateNormal]; [_playerListBtn setTitleColor:SmallTextColor forState:UIControlStateNormal];
_playerListBtn.titleLabel.font = SysFont(12); _playerListBtn.titleLabel.font = SysFont(12);
[_playerListBtn dk_setImage:DKImagePickerWithNames(@"playlist_icon", @"dk_playlist_icon", @"playlist_icon") forState:UIControlStateNormal]; [_playerListBtn dk_setImage:DKImagePickerWithNames(@"playlist_icon", @"dk_playlist_icon", @"playlist_icon") forState:UIControlStateNormal];
...@@ -316,31 +360,68 @@ ...@@ -316,31 +360,68 @@
return _playerListBtn; return _playerListBtn;
} }
- (SPButton *)circleBtn { - (SPButton *)playModeBtn {
if (!_circleBtn) { if (!_playModeBtn) {
_circleBtn = [[SPButton alloc] initWithImagePosition:SPButtonImagePositionTop]; _playModeBtn = [[SPButton alloc] initWithImagePosition:SPButtonImagePositionTop];
_circleBtn.imageTitleSpace = 2; _playModeBtn.imageTitleSpace = 2;
[_circleBtn addTarget:self action:@selector(circelBtnClick:) forControlEvents:UIControlEventTouchUpInside]; [_playModeBtn addTarget:self action:@selector(switchPlayModeAction:) forControlEvents:UIControlEventTouchUpInside];
[_circleBtn setTitleColor:SmallTextColor forState:UIControlStateNormal]; [_playModeBtn setTitleColor:SmallTextColor forState:UIControlStateNormal];
_circleBtn.titleLabel.font = SysFont(12); _playModeBtn.titleLabel.font = SysFont(12);
[_circleBtn dk_setImage:DKImagePickerWithNames(@"single_play", @"dk_single_play", @"single_play") forState:UIControlStateNormal]; [_playModeBtn dk_setImage:DKImagePickerWithNames(@"single_play", @"dk_single_play", @"single_play") forState:UIControlStateNormal];
_circleBtn.tag = SoundPlayModeSingle; _playModeBtn.tag = SoundPlayModeSingle;
[_circleBtn setTitle:@"单节播放" forState:UIControlStateNormal]; [_playModeBtn setTitle:@"单节播放" forState:UIControlStateNormal];
}
return _playModeBtn;
}
- (SPButton *)timeCloseBtn {
if (!_timeCloseBtn) {
_timeCloseBtn = [[SPButton alloc] initWithImagePosition:SPButtonImagePositionTop];
_timeCloseBtn.imageTitleSpace = 2;
[_timeCloseBtn addTarget:self action:@selector(didClickTimerAction:) forControlEvents:UIControlEventTouchUpInside];
[_timeCloseBtn setTitleColor:SmallTextColor forState:UIControlStateNormal];
_timeCloseBtn.titleLabel.font = SysFont(12);
[_timeCloseBtn dk_setImage:DKImagePickerWithNames(@"time_close_icon", @"dk_time_close_icon", @"time_close_icon") forState:UIControlStateNormal];
[_timeCloseBtn setTitle:@"定时关闭" forState:UIControlStateNormal];
}
return _timeCloseBtn;
}
- (TimingView *)timingView {
if (!_timingView) {
WS(weakSelf);
_timingView = [[TimingView alloc] initWithSureBlock:^(NSInteger index, NSArray * _Nonnull minuteDatas) {
weakSelf.minuteIndex = index;
weakSelf.countTime = 60 * [minuteDatas[index] intValue];
weakSelf.totalTime = 60 * [minuteDatas[index] intValue];
[weakSelf.timer setFireDate:[NSDate date]];
}];
} }
return _circleBtn; return _timingView;
} }
- (SPButton *)closeBtn { - (NSTimer *)timer {
if (!_closeBtn) { if (!_timer) {
_closeBtn = [[SPButton alloc] initWithImagePosition:SPButtonImagePositionTop]; WS(weakSelf);
_closeBtn.imageTitleSpace = 2; _timer = [NSTimer timerWithTimeInterval:1.0 repeats:YES block:^(NSTimer * _Nonnull timer) {
[_closeBtn addTarget:self action:@selector(timeDefineClick:) forControlEvents:UIControlEventTouchUpInside]; DSLog(@"============");
[_closeBtn setTitleColor:SmallTextColor forState:UIControlStateNormal];
_closeBtn.titleLabel.font = SysFont(12); // 暂停播放
[_closeBtn dk_setImage:DKImagePickerWithNames(@"time_close_icon", @"dk_time_close_icon", @"time_close_icon") forState:UIControlStateNormal]; if (weakSelf.countTime == 0) {
[_closeBtn setTitle:@"定时关闭" forState:UIControlStateNormal]; [weakSelf.timer setFireDate:[NSDate distantFuture]];
if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(timerHasCountDone)]) {
[weakSelf.delegate timerHasCountDone];
}
return;
}
weakSelf.countTime--;
NSString *countDownStr = [weakSelf formattimewithtimeinterval:weakSelf.countTime];
NSString *totalTimeStr = [weakSelf formattimewithtimeinterval:weakSelf.totalTime];
[weakSelf.timeCloseBtn setTitle:[NSString stringWithFormat:@"%@/%@",countDownStr, totalTimeStr] forState:UIControlStateNormal];
}];
[[NSRunLoop currentRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];
} }
return _closeBtn; return _timer;
} }
@end @end
//
// TimingView.h
// DreamSleep
//
// Created by peter on 2022/5/9.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
typedef void(^TimingBlock)(NSInteger index, NSArray *minuteDatas);
/// 首页和音频播放界面定时弹框
@interface TimingView : UIView
@property (nonatomic, copy) TimingBlock timingBlock;
- (instancetype)initWithSureBlock:(TimingBlock)block;
/// 显示定时器
- (void)display;
@end
NS_ASSUME_NONNULL_END
//
// TimingView.m
// DreamSleep
//
// Created by peter on 2022/5/9.
//
#import "TimingView.h"
@interface TimingView () <UIPickerViewDataSource, UIPickerViewDelegate>
@property (nonatomic, strong) UIView *bgView;
@property (nonatomic, strong) UIButton *closeBtn;
@property (nonatomic, strong) UILabel *titleLab;
@property (nonatomic, strong) UILabel *audioTimeLab;
@property (nonatomic, strong) UIPickerView *timePickerView;
@property (nonatomic, strong) UILabel *minuteLab;
@property (nonatomic, strong) UIButton *cancelBtn;
@property (nonatomic, strong) UIButton *sureBtn;
@property (nonatomic, strong) UIView *lineView;
@property (nonatomic, strong) NSArray *minuteDatas;
@property (nonatomic, assign) NSInteger currentTimeIndex;
@property (nonatomic, assign) NSInteger sureIndex;
@end
@implementation TimingView
- (instancetype)initWithSureBlock:(TimingBlock)block {
if (self = [super initWithFrame:[UIScreen mainScreen].bounds]) {
_currentTimeIndex = 0;
_timingBlock = block;
self.dk_backgroundColorPicker = DKColorPickerWithColors(ColorFromHex(0x6F7587), DSClearColor, DSWhite);
self.backgroundColor = [self.backgroundColor colorWithAlphaComponent:0.6];
NSMutableArray *tmpArr = [NSMutableArray array];
for (int i = 1; i < 121; i++) {
[tmpArr addObject:[NSString stringWithFormat:@"%d", i]];
}
self.minuteDatas = [tmpArr copy];
[self addSubview:self.bgView];
[self.bgView addSubview:self.titleLab];
[self.bgView addSubview:self.closeBtn];
[self.bgView addSubview:self.audioTimeLab];
[self.bgView addSubview:self.timePickerView];
[self.bgView addSubview:self.minuteLab];
[self.bgView addSubview:self.cancelBtn];
[self.bgView addSubview:self.sureBtn];
[self.bgView addSubview:self.lineView];
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.size.mas_equalTo(CGSizeMake(280, 236));
make.center.equalTo(self);
}];
[self.titleLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.bgView);
make.top.equalTo(self.bgView).offset(20);
}];
[self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.titleLab);
make.top.equalTo(self.bgView).offset(15);
make.right.equalTo(self.bgView).offset(-15);
}];
[self.audioTimeLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.bgView).offset(63);
make.top.equalTo(self.bgView).offset(97);
}];
[self.timePickerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.audioTimeLab.mas_right);
make.right.equalTo(self.minuteLab.mas_left);
make.top.equalTo(self.titleLab.mas_bottom).offset(22);
make.bottom.equalTo(self.sureBtn.mas_top).offset(-22);
}];
[self.minuteLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.audioTimeLab);
make.right.equalTo(self.bgView).offset(-63);
}];
[self.cancelBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.bgView);
make.bottom.equalTo(self.bgView);
make.height.equalTo(@64);
}];
[self.sureBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.bgView);
make.bottom.equalTo(self.bgView);
make.size.equalTo(self.cancelBtn);
make.left.equalTo(self.cancelBtn.mas_right);
}];
[self.lineView mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.bgView);
make.centerY.equalTo(self.sureBtn);
make.size.mas_equalTo(CGSizeMake(1, 40));
}];
}
return self;
}
#pragma mark - Actions
- (void)display {
[DSKeyWindow addSubview:self];
self.hidden = NO;
[self.timePickerView selectRow:self.sureIndex inComponent:0 animated:YES];
}
- (void)dismissTimingView {
self.hidden = YES;
}
- (void)sureAction {
[self dismissTimingView];
self.sureIndex = self.currentTimeIndex;
if (self.timingBlock) {
self.timingBlock(self.sureIndex, self.minuteDatas);
}
}
#pragma mark - UIPickerViewDataSource && UIPickerViewDelegate
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView*)pickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return self.minuteDatas.count;
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
self.currentTimeIndex = row;
}
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
UILabel *lab = [UILabel labWithTextColor:BrandColor font:SysFont(16)];
lab.frame = CGRectMake(0.0, 0.0, 70, 35);
lab.textAlignment = NSTextAlignmentCenter;
lab.text = self.minuteDatas[row];
if (@available(iOS 14.0, *)) {
pickerView.subviews[1].backgroundColor = DSClearColor;
}
return lab;
}
#pragma mark - lazy
- (UIView *)bgView {
if (!_bgView) {
_bgView = [UIView new];
_bgView.dk_backgroundColorPicker = DKColorPickerWithKey(TabBarBG);
[_bgView cornerRadius:24];
}
return _bgView;
}
- (UILabel *)titleLab {
if (!_titleLab) {
_titleLab = [UILabel dkLabWithText:@"设置时间" font:BoldFont(16)];
_titleLab.textAlignment = NSTextAlignmentCenter;
}
return _titleLab;
}
- (UIButton *)closeBtn {
if (!_closeBtn) {
_closeBtn = [UIButton new];
[_closeBtn dk_setImage:DKImagePickerWithNames(@"home_close", @"dk_home_close", @"home_close") forState:UIControlStateNormal];
[_closeBtn addTarget:self action:@selector(dismissTimingView) forControlEvents:UIControlEventTouchUpInside];
}
return _closeBtn;
}
- (UILabel *)audioTimeLab {
if (!_audioTimeLab) {
_audioTimeLab = [UILabel dkLabWithText:@"音频时长" font:SysFont(15)];
_audioTimeLab.textAlignment = NSTextAlignmentCenter;
}
return _audioTimeLab;
}
- (UIPickerView *)timePickerView {
if (!_timePickerView) {
_timePickerView = [UIPickerView new];
_timePickerView.delegate = self;
_timePickerView.dataSource = self;
}
return _timePickerView;
}
- (UILabel *)minuteLab {
if (!_minuteLab) {
_minuteLab = [UILabel dkLabWithText:@"分钟" font:SysFont(15)];
_minuteLab.textAlignment = NSTextAlignmentCenter;
}
return _minuteLab;
}
- (UIButton *)cancelBtn {
if (!_cancelBtn) {
_cancelBtn = [UIButton dkBtnTitle:@"取消设置" font:SysFont(15)];
[_cancelBtn dk_setTitleColorPicker:DKColorPickerWithKey(TEXT) forState:UIControlStateNormal];
[_cancelBtn addTarget:self action:@selector(dismissTimingView) forControlEvents:UIControlEventTouchUpInside];
}
return _cancelBtn;
}
- (UIButton *)sureBtn {
if (!_sureBtn) {
_sureBtn = [UIButton btnWithTitle:@"确定" titleColor:BrandColor font:SysFont(15)];
[_sureBtn addTarget:self action:@selector(sureAction) forControlEvents:UIControlEventTouchUpInside];
}
return _sureBtn;
}
- (UIView *)lineView {
if (!_lineView) {
_lineView = [UIView new];
_lineView.dk_backgroundColorPicker = DKColorPickerWithColors(ColorFromHex(0xE6E6E6), DarkColor, DSWhite);
}
return _lineView;
}
@end
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!