ios - AVAudioPlayer 缓慢降低级别

标签 ios objective-c avaudioplayer

我创建了一个声音,我是这样播放的:

NSURL *musicFile = [[NSBundle mainBundle] URLForResource:@"My music"
                                           withExtension:@"mp3"];
self.backgroundMusic = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile
                                                              error:nil];
self.backgroundMusic.numberOfLoops = -1;
[self.backgroundMusic play];

但是当我改变观点时,我想停止音乐。但是慢慢地,平稳地,而不是立即。当您将应用程序置于后台时,您的音乐不会立即停止,而是在大约 0.5 秒后停止。

这可能吗?

谢谢!

最佳答案

是的,这是可能的,并且有几种方法可以实现这种“淡出”效果。

我在早期的项目中就是这样做的,对我来说效果很好

-(void)fadeOut {  

    if (self.backgroundMusic.volume > 0.05) {

        self.backgroundMusic.volume = self.backgroundMusic.volume - 0.05;

        // Volume will be zero after ~0.5 seconds
        [self performSelector:@selector(fadeOut) withObject:nil afterDelay:1.0/40.0];   

     } else {
        [self.backgroundMusic stop];
    }
}

关于ios - AVAudioPlayer 缓慢降低级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20713649/

相关文章:

iphone - iOS开发指南中的可能错误

iPhone操作系统4.0 : Application is not coming applicationDidBecomeActive

ios - 当应用程序进入后台时停止AVAudioPlayer

iOS:在特定时间播放音频文件并在特定持续时间后停止

iphone - 在 iOS 上将图像分享到 Instagram

ios - 在我的网站上统计我的应用下载量

ios - 如何在Xcode 4.2中“添加现有文件”?

iphone - 如何以编程方式设置仅垂直滚动

ios - SKEmiterNode 与 AVAudioPlayer 用于音乐视觉效果

ios - 无法运行 ios 的 React Native 项目