The following algorithm should be reviewed and, of course, optimized. This is just what I put together, and I have not tested it.
initialize each slider with the maximum and minimum values and set the desired value, but observing this x + y + z = 1 .
[self.slider1 setMinimumValue:0.0]; [self.slider1 setMaximumValue:1.0]; [self.slider1 setValue:0.20]; [self.slider2 setMinimumValue:0.0]; [self.slider2 setMaximumValue:1.0]; [self.slider2 setValue:0.30]; [self.slider3 setMinimumValue:0.0]; [self.slider3 setMaximumValue:1.0]; [self.slider3 setValue:0.50];
Set the three sliders to the same selector:
[self.slider1 addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged]; [self.slider2 addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged]; [self.slider3 addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged];
The selector should do something like this:
- (void)valueChanged:(UISlider *)slider { UISlider *sliderX = nil; UISlider *sliderY = nil; UISlider *sliderZ = nil; if (slider == self.slider1) { sliderX = self.slider1; sliderY = self.slider2; sliderZ = self.slider3; } else if (slider == self.slider2) { sliderY = self.slider1; sliderX = self.slider2; sliderZ = self.slider3; } else { sliderY = self.slider1; sliderZ = self.slider2; sliderX = self.slider3; } float x = sliderX.value; float y = sliderY.value; float z = sliderZ.value;
If something is wrong with this code, let me know and I can fix it!
source share