我正在创建一个使用两首歌曲的应用程序:一首来自本地文件,另一首来自用户的iPod库。我想创建一个软件混音工具,这意味着每个音频的音量可以独立设置。我为两个卷使用了两个UISlider
。
我想实现交叉渐变类型的行为,这意味着如果一个组件的组件设置为最大,则另一个音频的组件设置为零。我该如何实现呢?
答案 0 :(得分:0)
您可以设置与库中歌曲音量相关的滑块current_value,以及MAX_Slider_Value - current_Value来自本地文件的歌曲音量,我想这可以做到这一点
答案 1 :(得分:0)
您可以使用键值编码(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];
}