Многократная регулировка громкости для отдельных песен - PullRequest
1 голос
/ 31 марта 2011

Я создаю приложение, которое использует две песни: одну из локального файла и одну из пользовательской библиотеки iPod.Я хотел бы создать программный инструмент микширования, означающий, что громкость каждого звука можно устанавливать независимо.Я использовал два UISlider s для обеих громкостей.

Я хотел бы реализовать тип поведения с перекрестным затуханием, означающий, что, если компонент одного компонента установлен на максимум, компонент другого аудиоустановить на ноль.Как мне это реализовать?

Ответы [ 2 ]

0 голосов
/ 31 марта 2011

Вы бы реализовали этот тип поведения, используя кодирование значения ключа (KVC) и наблюдение значения ключа (KVO) . Если значение первого слайдера изменилось, измените значение второго. Но убедитесь, что вы не запускаете никаких уведомлений KVO, в противном случае вы попали в бесконечный цикл.

- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    if ([[object class] isEqual:NSClassFromString(@"UISlider")] {
        if ([keyPath isEqual:@"value"]) {
            if (object == volumeSlider1) {
                // set value of second slider without firing KVO notifications
            } else {
                // set value of first slider without firing KVO notifications
            }
        }
    }
}

- (void) viewDidLoad
{
    [volumeSlider1 addObserver:self forKeyPath:@"value" options:NSKeyValueObservingOptionNew context:NULL]; 
    [volumeSlider2 addObserver:self forKeyPath:@"value" options:NSKeyValueObservingOptionNew context:NULL];
}
0 голосов
/ 31 марта 2011

Вы можете установить ползунок current_value, связанный с громкостью песни из библиотеки, и MAX_Slider_Value - current_Value громкость песни из локального файла, я думаю, что это может помочь

...