gpt4 book ai didi

iphone - UISlider 控制 AVAudioPlayer

转载 作者:太空狗 更新时间:2023-10-30 03:08:45 24 4
gpt4 key购买 nike

我正在尝试在我的应用程序中实现一个小功能。我目前正在以 AVAudioPlayers 的身份播放声音,效果很好。我想添加的是使用 UISlider 控制声音的位置 (currentTime):有没有一种简单的方法可以做到这一点?

我看了一个 Apple 项目,但它很乱......你有 sample 或建议吗?

提前感谢大家

最佳答案

应该不是问题 - 只需将 slider 设置为连续并将最大值设置为加载声音文件后播放器的持续时间。

编辑

我刚刚做了这个,它对我有用......

- (IBAction)slide {
player.currentTime = slider.value;
}

- (void)updateTime:(NSTimer *)timer {
slider.value = player.currentTime;
}

- (IBAction)play:(id)sender {
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"sound.caf" ofType:nil]];
NSError *error;
player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
if (!player) NSLog(@"Error: %@", error);
[player prepareToPlay];
slider.maximumValue = [player duration];
slider.value = 0.0;

[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateTime:) userInfo:nil repeats:YES];
[player play];
}

slider 在 IB 中配置,开始播放的按钮也是如此。

Swift 3.0 更新:

var player: AVAudioPlayer!
var sliderr: UISlider!

@IBAction func play(_ sender: Any) {
var url = URL(fileURLWithPath: Bundle.main.path(forResource: "sound.caf", ofType: nil)!)
var error: Error?
do {
player = try AVAudioPlayer(contentsOf: url)
}
catch let error {
}
if player == nil {
print("Error: \(error)")
}
player.prepareToPlay()
sliderr.maximumValue = Float(player.duration)
sliderr.value = 0.0
Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.updateTime), userInfo: nil, repeats: true)
player.play()
}

func updateTime(_ timer: Timer) {
sliderr.value = Float(player.currentTime)
}

@IBAction func slide(_ slider: UISlider) {
player.currentTime = TimeInterval(slider.value)
}

关于iphone - UISlider 控制 AVAudioPlayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2654849/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com