/ / Come posso aggiornare il volume della musica su iPhone, attraverso un UISlider? - iphone, obiettivo-c, ios, uislider

Come posso aggiornare il volume della musica su iPhone, attraverso un UISlider? - iphone, obiettivo-c, ios, uislider

Ho provato a creare un UISlider che controllivolume della musica di sottofondo e qualunque cosa imposti il ​​valore dovrebbe essere il volume della musica. Il problema è che quando eseguo l'app nel simulatore e sposto il cursore, il volume rimane quello del volume originale, non viene aggiornato.

Sono nuovo alla programmazione quindi ho ancora bisogno di aiuto con le basi.

Ecco il mio viewcontroller.h:

@interface FifthViewController : UIViewController <AVAudioPlayerDelegate> {

IBOutlet UISlider *slider;
IBOutlet UIAlertView *alert;
AVAudioPlayer *theAudio;


}


-(IBAction)alertbutton;
-(IBAction)changeVolume;
@end;

ed ecco il viewcontroller.m:

- (void)viewDidLoad

{
NSString *path = [[NSBundle mainBundle] pathForResource:@"background music" ofType:@"mp3"];
AVAudioPlayer* theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
theAudio.delegate = self;
[theAudio play];
theAudio.numberOfLoops = -1;
theAudio.volume=slider.value;


[super viewDidLoad];
}

Ho collegato "slider" a un cursore orizzontalee il suono suona e loop. E se imposto il valore dello slider più alto o più basso in Xcode, quando eseguo l'app, il volume si adegua di conseguenza. Ma se nell'app cambio il valore del cursore, il volume rimane lo stesso. Qualcuno può guardare il mio codice e dirmi cosa sto facendo male e come risolverlo?

risposte:

0 per risposta № 1

Supponendo di avere un'istanza di AVAudioPlayer installazione nel controller.

Imposta il cursore per eseguire da 0,0 a 1,0 e collegarlo a un'azione.

-(void)volumeValueChange:(UISlider *)sender
{
(AVAudioPlayer *)myaudioplayer.volume = sender.value;
}

0 per risposta № 2

//.m implementazione dove audioPlayer è un oggetto di AVAudioPlayer

-(void)volumeValueChange:(UISlider *)sender
{
audioPlayer.volume = sender.value;
}