IOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдСрдбрд┐рдпреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕

рд╢реБрдн рджреЛрдкрд╣рд░, рд╣реЗрдмреНрд░реЛрд╕реЛрд╕рд┐рдЯреА!

рдореИрдВ iOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдСрдбрд┐рдпреЛ рдЪрд▓рд╛рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рд╣рдордиреЗ рдЕрдЧрд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛: рд╣рдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрдЧрд╣реЛрдВ рдкрд░ рд╕рдВрдЧреАрдд рдФрд░ рдзреНрд╡рдирд┐ рдкреНрд░рднрд╛рд╡ рдЦреЗрд▓рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдФрд░ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рдЬреЛ рдЕрдХреНрд╕рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИред



рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ "рд░рд┐рдХреНрдд" рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЙрдкреА рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдордиреЗ рдЗрд╕реЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдФрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╕рдордп рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рдерд╛ред рдпрд╣ рд╕рдорд╛рдзрд╛рди рдПрдХ "рд╕рд┐рдВрдЧрд▓рдЯрди" рдирд┐рдХрд▓рд╛, рдЬреЛ рди рдХреЗрд╡рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рднреА рдмрдЪрд╛рдПрдЧрд╛ рдпрджрд┐ рдПрдХ рд╣реА рдСрдбрд┐рдпреЛ рдХрд╛ рдХрдИ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдЖрдИрдУрдПрд╕ рдореЗрдВ, рдЖрдк рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рдзреНрд╡рдирд┐рдпреЛрдВ рдХреЛ рдмрдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред рд╕рд┐рд╕реНрдЯрдо рдзреНрд╡рдирд┐рдпреЛрдВ рдХреЛ "рд╕рд┐рд╕реНрдЯрдо" рдзреНрд╡рдирд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ - рдЫреЛрдЯреА рдЖрд╡рд╛рдЬрд╝реЗрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреБрдЫ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓реА рдЬрд╛рддреА рд╣реИрдВ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрдЯрди "рдЖрд╡рд╛рдЬ" рдпрд╛ рдПрдХ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВред рдПрдХ рдЕрдиреНрдп рд╢реНрд░реЗрдгреА "рд╕рдВрдЧреАрдд" рд╣реИ - рдирд┐рд░рдВрддрд░ рдСрдбрд┐рдпреЛ, рдЬреИрд╕реЗ рдЧреАрдд, рдзреБрди, рдЖрджрд┐ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЕрджреНрднреБрдд рд╕рдВрдЧреАрддрдХрд╛рд░ рдмрдЦреНрддрд┐рдпрд╛рд░ рдЕрдорд╛рдирдЭреЛрд▓ рдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рд░рд╛рдЧ рдерд╛ред

" рд╕рд┐рд╕реНрдЯрдо рд╕рд╛рдЙрдВрдб рд╕рд░реНрд╡рд┐рд╕реЗрдЬ " рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рдШреБ рдзреНрд╡рдирд┐рдпрд╛рдБ рдмрдЬрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рдЕрдореВрд░реНрдд рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рджреНрд╡рд╛рд░рд╛ рд▓рдВрдмреЗ рдСрдбрд┐рдпреЛ рдХрд╛ рдкреНрд▓реЗрдмреИрдХ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рд╣рдордиреЗ AVAudioPlayer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ "рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдердбреНрд╕" рдХреЗ рдмрдЬрд╛рдп "рдХреНрд▓рд╛рд╕ рдореЗрдердбреНрд╕" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдПрдХреНрд╕реЗрд╕ рджреЗрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдк рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдзреНрд╡рдирд┐ рдмрдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

[MCSoundBoard playSoundForKey:@"ding"]; 


рдЗрд╕ рддрд░рд╣ рдХреА рдХреЙрд▓ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЙрд╕реА рд╕рдордп, рдСрдбрд┐рдпреЛ рдЕрдВрд╢реЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рддреЗ рд╣реБрдП, рд╣рдордиреЗ "рд╕рд┐рдВрдЧрд▓рдЯрди" рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдореЗрдВ рд╕рд┐рдВрдЧрд▓реЗрдЯреНрд╕ рдХреЛ рдХрдИ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдл-рд╕реБрдерд░реА рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ ред рдпрд╣рд╛рдБ рдХреЛрдб рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 + (MCSoundBoard *)sharedInstance { __strong static id _sharedObject = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _sharedObject = [[self alloc] init]; }); return _sharedObject; } 


рддрдм рд╣рдордиреЗ "рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ" рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпреЗ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ):

 + (void)addSoundAtPath:(NSString *)filePath forKey:(id)key; + (void)playSoundForKey:(id)key; + (void)addAudioAtPath:(NSString *)filePath forKey:(id)key; + (void)playAudioForKey:(id)key; + (void)stopAudioForKey:(id)key; + (void)pauseAudioForKey:(id)key; 


рдпреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╕рд┐рдВрдЧрд▓рдЯрди рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд┐рдзрд┐ рдХрд╣рд▓рд╛рддреА рд╣реИрдВ:

 - (void)addSoundAtPath:(NSString *)filePath forKey:(id)key { NSURL* fileURL = [NSURL fileURLWithPath:filePath]; SystemSoundID soundId; AudioServicesCreateSystemSoundID((__bridge CFURLRef)fileURL, &soundId); [_sounds setObject:[NSNumber numberWithInt:soundId] forKey:key]; } + (void)addSoundAtPath:(NSString *)filePath forKey:(id)key { [[self sharedInstance] addSoundAtPath:filePath forKey:key]; } 


рдлреАрдХрд╛ - рдмрд╛рд╣рд░


рдЗрд╕ рдкрд░, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА "рд╕рдВрдЧреАрддрдордп" рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рддреИрдпрд╛рд░ рдереАред рдпрд╣ рд╕рдВрдЧреАрдд рдкрд░ рднреА рдФрд░ "рддреЗрдЬ" рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред рд╕рдорд╛рдзрд╛рди рдзреАрд░реЗ-рдзреАрд░реЗ рдзреНрд╡рдирд┐ рд╕реНрддрд░ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдпрд╛ рдХрдо рдХрд░рдирд╛ рдерд╛ред AVFoundation рдиреЗ рдРрд╕рд╛ рдЕрд╡рд╕рд░ рдирд╣реАрдВ рджрд┐рдпрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЦреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ:

 - (void)fadeOutAndStop:(NSTimer *)timer { AVAudioPlayer *player = timer.userInfo; float volume = player.volume; volume = volume - 1.0 / MCSOUNDBOARD_AUDIO_FADE_STEPS; volume = volume < 0.0 ? 0.0 : volume; player.volume = volume; if (volume == 0.0) { [timer invalidate]; [player pause]; } } - (void)stopAudioForKey:(id)key fadeOutInterval:(NSTimeInterval)fadeOutInterval { AVAudioPlayer *player = [_audio objectForKey:key]; // If fade in inteval interval is not 0, schedule fade in if (fadeOutInterval > 0) { NSTimeInterval interval = fadeOutInterval / MCSOUNDBOARD_AUDIO_FADE_STEPS; [NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(fadeOutAndStop:) userInfo:player repeats:YES]; } else { [player stop]; } } 


рд╡рд╣ рд╕рдм рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдПрдХ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧреАред

рд╡реИрдХрд▓реНрдкрд┐рдХ: GitHub рдкрд░ MCSoundBoard

Source: https://habr.com/ru/post/In148886/


All Articles