按下音量按钮时更改音量滑块位置

Posted

技术标签:

【中文标题】按下音量按钮时更改音量滑块位置【英文标题】:Changing volume slider position when volume buttons pressed 【发布时间】:2017-06-27 10:28:40 【问题描述】:

如何将音量按钮与音量滑块连接起来?

我正在使用 AVAudioPlayer 并且滑块音量和物理音量按钮工作正常,但问题是它们是单独工作的,所以我需要实现的是,当我通过音量滑块按下物理音量按钮时也会改变位置。

我的代码如下:

-(IBAction)btnClked:(id)sender 

    NSURL *musicFile;

    musicFile = [NSURL fileURLWithPath:[[NSBundle mainBundle]
                                        pathForResource:@"music"
                                        ofType:@"mp3"]];

    myAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil];

    [self.button setBackgroundImage:[UIImage imageNamed:@"Play.png"] forState:UIControlStateNormal];

    if (self.button.tag == 0) 
        self.button.tag = 1;
        [self.button setImage:[UIImage imageNamed:@"Stop.png"] forState:UIControlStateNormal];

        [myAudio play];
        myAudio.numberOfLoops = -1;
        myAudio.currentTime = 0;
        myAudio.volume = 0.5;

     else 
        self.button.tag = 0;
        [self.button setImage:[UIImage imageNamed:@"Play.png"] forState:UIControlStateNormal];
        [myAudio stop];

    

我的滑块更改方法如下所示:

- (IBAction)sliderChange:(UISlider *)sender 
    myAudio.volume = sender.value / 1;

提前致谢!

【问题讨论】:

使用 MPVolumeView 就可以了 :) 【参考方案1】:

使用此 MPVolumeView 设置音量滑块,您可以按照自己的方式自定义...

- (void)showTheVolumeSlider :(UIView *)viewVolumeParent

    MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:viewVolumeParent.bounds] ;
    volumeView.showsRouteButton = NO;
    [viewVolumeParent addSubview:volumeView];
//    [volumeView setVolumeThumbImage:[UIImage imageNamed:@"thumb.png"] forState:UIControlStateNormal];

    [[volumeView subviews] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) 
        if ([obj isKindOfClass:[UISlider class]]) 

            [obj setThumbImage:[UIImage imageNamed:@"thumb.png"]forState:UIControlStateNormal];
            *stop = YES;
        
    ];

【讨论】:

以上是关于按下音量按钮时更改音量滑块位置的主要内容,如果未能解决你的问题,请参考以下文章

音量未更改时检测硬件音量按钮按下

MPMoviePlayerController 自定义音量滑块问题

如何使用滑块更改 HTML5 音频音量或轨道位置? [复制]

如果在播放歌曲之前按下音量滑块,如何阻止音乐播放器崩溃?

如何在iOS上获得音量级别和音量更改通知?

检测音量按钮即使在音量最大时按下