iOS 7: controles de audio simples con AVAudioPlayer?

Acabo de comenzar a codificar aplicaciones para iOS con xCode y no es muy fácil ni intuitivo encontrar cómo funcionan las cosas. Soy muy nuevo en esto y mi aplicación continúa muy despacio ^^. De todos modos, ahora estoy probando cosas en iOS7, al less.

Logré crear tablas dinámicas con celdas de aduana y altura dinámica, pero ahora no encuentro ninguna solución a mi problema … Tal vez no busqué en el lugar correcto … de todos modos.

Tengo una reproducción de audio, gracias a estas líneas:

NSString *path = [[NSBundle mainBundle] pathForResource:@"song" ofType:@"mp3"]; AVAudioPlayer *audio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil]; ; ; 

Ahora, eso es genial, mi audio se reproduce. Pero no tengo controles. Agregué exitosamente un button de reproducción / pausa, pero ¿cómo navegar dentro del audio? ¿Tengo que codificar TODA la interfaz? ¿No hay una interfaz sencilla con un button y una barra de progreso sensible?

Y si tengo que codificarlo, bueno, hum … ¿dónde empiezo?

¡Muchas gracias!

Use un UISlider con AVAudioPlayer's playAtTime: Method, no hay una barra de búsqueda incorporada para AVAudioPlayer.

Mira este código de muestra, implementa lo que quieres en la class avTouchController

https://developer.apple.com/library/ios/samplecode/avTouch/Introduction/Intro.html

agregue una interfaz UISLider a usted y enlace el valorChanged: al método seekTime:

en .h

 @property (nonatomic, weak) IBOutlet UISlider *seekbar; @property (nonatomic, strong) AVAudioPlayer *audioPlayer; @property (nonatomic, strong) NSTimer *updateTimer; 

en .m en viewDidLoad después de cargar AVAudioPlayer,

 NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: [[NSBundle mainBundle] pathForResource:@"There's A Long, Long Trail A-Winding" ofType:@"mp3"]]; AVAudioPlayer *audio = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil]; self.audioPlayer = audio; self.seekbar.minimumValue = 0; self.seekbar.maximumValue = self.audioPlayer.duration; [[self audioPlayer] play]; self.updateTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateSeekBar) userInfo:nil repeats:YES] 

y agrega el siguiente método

 - (void)updateSeekBar{ float progress = self.audioPlayer.currentTime; [self.seekbar setValue:progress]; } - (IBAction)seekTime:(id)sender { self.audioPlayer.currentTime = self.seekbar.value; } 
 Play audio and update UISlider with it. -(void)viewWillAppear:(BOOL)animated { NSString *soundFile=[[NSBundle mainBundle] pathForResource:@"name of your audio file." ofType:@".mp3"]; NSURL *soundFileUrl=[NSURL fileURLWithPath:soundFile]; soundPlayer=[[AVAudioPlayer alloc] initWithContentsOfURL:soundFileUrl error:nil]; [soundPlayer prepareToPlay]; soundPlayer.delegate=self; slider.maximumValue=[soundPlayer duration]; slider.minimumValue=0.0; soundPlayer.currentTime=slider.value; [soundPlayer play]; [self startTimer]; } #pragma mark Timer Methods - (void)startTimer { timerForPlaying= [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateSlider) userInfo:nil repeats:YES]; } - (void)stopTimer { [timerForPlaying invalidate]; timerForPlaying = nil; } // This method for updating UISlider when sound start to play. - (void)updateSlider { [slider setValue:soundPlayer.currentTime animated:NO]; startTime=slider.value; } // When we adjust sound according to slider value connect this method to your slider value change event. -(void)valueChange:(id)sender { soundPlayer.currentTime=slider.value; }