// // XPRoomBackMusicPlayerView.m // xplan-ios // // Created by 冯硕 on 2022/5/9. // #import "XPRoomBackMusicPlayerView.h" ///Third #import ///Tool #import "ThemeColor.h" #import "UIImage+Utils.h" #import "XCCurrentVCStackManager.h" #import "XPCoreDataManager.h" #import "RtcManager.h" ///Model #import "Music+CoreDataClass.h" ///View #import "XPRoomMusicLibraryViewController.h" @interface XPRoomBackMusicPlayerView () ///显示歌曲的名字 @property (nonatomic,strong) UILabel *titleLabel; ///声音的logo @property (nonatomic,strong) UIImageView *voiceImageView; ///调节声音 @property (nonatomic,strong) UISlider *voiceSliderView; ///播放暂停 @property (nonatomic,strong) UIButton *playButton; ///下一首 @property (nonatomic,strong) UIButton *nextButton; ///更多 @property (nonatomic,strong) UIButton *moreButton; @property(nonatomic,strong)NSFetchedResultsController *fetchedResultController; @end @implementation XPRoomBackMusicPlayerView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self initSubViews]; [self initSubViewConstraints]; } return self; } #pragma mark - Private Method - (void)initSubViews { self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.8]; self.layer.masksToBounds = YES; self.layer.cornerRadius = 40.f; [self addSubview:self.titleLabel]; [self addSubview:self.voiceImageView]; [self addSubview:self.voiceSliderView]; [self addSubview:self.playButton]; [self addSubview:self.nextButton]; [self addSubview:self.moreButton]; } - (void)initSubViewConstraints { [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.mas_equalTo(self).inset(30); make.top.mas_equalTo(self).offset(17); }]; [self.voiceImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.size.mas_equalTo(CGSizeMake(12, 15)); make.left.mas_equalTo(self.titleLabel); make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(18); }]; [self.voiceSliderView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(self.voiceImageView.mas_right).offset(5); make.right.mas_equalTo(self.playButton.mas_left).offset(-10); make.centerY.mas_equalTo(self.voiceImageView); }]; [self.playButton mas_makeConstraints:^(MASConstraintMaker *make) { make.size.mas_equalTo(CGSizeMake(22, 22)); make.centerY.mas_equalTo(self.voiceImageView); make.right.mas_equalTo(self.nextButton.mas_left).offset(-10); }]; [self.nextButton mas_makeConstraints:^(MASConstraintMaker *make) { make.size.mas_equalTo(CGSizeMake(22, 22)); make.centerY.mas_equalTo(self.voiceImageView); make.right.mas_equalTo(self.moreButton.mas_left).offset(-10); }]; [self.moreButton mas_makeConstraints:^(MASConstraintMaker *make) { make.size.mas_equalTo(CGSizeMake(22, 22)); make.centerY.mas_equalTo(self.voiceImageView); make.right.mas_equalTo(self).offset(-30); }]; } #pragma mark - Event Response - (void)voiceSliderViewValueChange:(UISlider *)slider { } - (void)moreButtonAction:(UIButton *)sender { XPRoomMusicLibraryViewController * musicLibraryVC = [[XPRoomMusicLibraryViewController alloc] init]; [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:musicLibraryVC animated:YES]; } - (void)playButtonAction:(UIButton *)sender { if (self.fetchedResultController.fetchedObjects.count <=0) { XPRoomMusicLibraryViewController * musicLibraryVC = [[XPRoomMusicLibraryViewController alloc] init]; [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:musicLibraryVC animated:YES]; } else { switch (sender.tag) { case 1000: { NSArray * array = self.fetchedResultController.fetchedObjects; Music * music = [array objectAtIndex:0]; [[RtcManager instance] playBackMusic:music.filePath musicId:0]; [[RtcManager instance] updateUserSound:50]; [[RtcManager instance] updateMusicSound:50]; } break; case 1001: break; case 1002: break; default: break; } } } #pragma mark - Getters And Setters - (UILabel *)titleLabel { if (!_titleLabel) { _titleLabel = [[UILabel alloc] init]; _titleLabel.font = [UIFont systemFontOfSize:13]; _titleLabel.textColor = UIColor.whiteColor; _titleLabel.text = @"暂无音乐播放"; } return _titleLabel; } - (UIImageView *)voiceImageView { if (!_voiceImageView) { _voiceImageView = [[UIImageView alloc] init]; _voiceImageView.userInteractionEnabled = YES; _voiceImageView.image = [UIImage imageNamed:@"room_music_small_player_voice"]; } return _voiceImageView; } - (UISlider *)voiceSliderView { if (!_voiceSliderView) { _voiceSliderView = [[UISlider alloc]init]; _voiceSliderView.minimumValue = 0; _voiceSliderView.maximumValue = 100; _voiceSliderView.value = 50; _voiceSliderView.minimumTrackTintColor = [UIColor whiteColor]; _voiceSliderView.maximumTrackTintColor = UIColorFromRGB(0x999999); [_voiceSliderView setThumbImage:[UIImage imageNamed:@"room_music_small_player_white_dot"] forState:UIControlStateNormal]; [_voiceSliderView addTarget:self action:@selector(voiceSliderViewValueChange:) forControlEvents:UIControlEventValueChanged]; } return _voiceSliderView; } - (UIButton *)playButton { if (!_playButton) { _playButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_playButton setImage:[UIImage imageNamed:@"room_music_small_player_play"] forState:UIControlStateNormal]; [_playButton setImage:[UIImage imageNamed:@"room_music_small_player_pause"] forState:UIControlStateSelected]; _playButton.tag = 1000; [_playButton addTarget:self action:@selector(playButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } return _playButton; } - (UIButton *)moreButton { if (!_moreButton) { _moreButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_moreButton setImage:[UIImage imageNamed:@"room_music_small_player_more"] forState:UIControlStateNormal]; [_moreButton setImage:[UIImage imageNamed:@"room_music_small_player_more"] forState:UIControlStateSelected]; _moreButton.tag = 1001; [_moreButton addTarget:self action:@selector(moreButtonAction:) forControlEvents:UIControlEventTouchUpInside]; _moreButton.transform = CGAffineTransformMakeRotation(-M_PI /2); } return _moreButton; } - (UIButton *)nextButton { if (!_nextButton) { _nextButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_nextButton setImage:[UIImage imageNamed:@"room_music_small_player_next"] forState:UIControlStateNormal]; [_nextButton setImage:[UIImage imageNamed:@"room_music_small_player_next"] forState:UIControlStateSelected]; _nextButton.tag = 1002; [_nextButton addTarget:self action:@selector(playButtonAction:) forControlEvents:UIControlEventTouchUpInside]; } return _nextButton; } -(NSFetchedResultsController *)fetchedResultController{ if (!_fetchedResultController) { NSFetchRequest *request = [[NSFetchRequest alloc]initWithEntityName:@"Music"]; NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"musicId" ascending:true]; request.sortDescriptors = @[sort]; _fetchedResultController = [[NSFetchedResultsController alloc]initWithFetchRequest:request managedObjectContext:[XPCoreDataManager shareInstance].managedObjectContext sectionNameKeyPath:nil cacheName:nil]; _fetchedResultController.delegate = self; [_fetchedResultController performFetch:nil]; } return _fetchedResultController; } @end