Does anyone know how to set the start position of a UISlider
(ideally in the middle) and also how to increment it in tens instead of ones?
Here's what I've got so far:
// Setup custom slider images
UIImage *minImage = [UIImage imageNamed:@"ins_blueTrack.png"];
UIImage *maxImage = [UIImage imageNamed:@"ins_whiteTrack.png"];
UIImage *tumbImage= [UIImage imageNamed:@"slide.png"];
minImage=[minImage stretchableImageWithLeftCapWidth:6.0 topCapHeight:0.0];
maxImage=[maxImage stretchableImageWithLeftCapWidth:6.0 topCapHeight:0.0];
// Setup the slider
[self.slider setMinimumTrackImage:minImage forState:UIControlStateNormal];
[self.slider setMaximumTrackImage:maxImage forState:UIControlStateNormal];
[self.slider setThumbImage:tumbImage forState:UIControlStateNormal];
self.slider.minimumValue = 10;
self.slider.maximumValue = 180;
self.slider.continuous = YES;
int myVal = self.slider.value;
NSString *timeValue = [[NSString alloc] initWithFormat:@"%1d", myVal];
self.timeLabel.text = timeValue;
// Attach an action to sliding
[self.slider addTarget:self action:@selector(fxSliderAction) forControlEvents:UIControlEventValueChanged];
Setting the Slider Position
In keeping with your code you could have:
self.slider.value = (90);
Note: there is no real need for self
when you're referencing the IBOutlet
from the same class.
If you want a truly dynamic way of setting the UISlider
to the halfway mark, you would just divide your maximum value by 2, effectively halving it:
self.slider.value = (self.slider.maximumValue / 2);
Incrementing in Multiples of 10
For this I would suggest something slightly different to what you currently have. Instead of having a minimum of 10 and a maximum of 180, what about a minimum of 1 and a maximum of 18?
self.slider.minimumValue = 1;
self.slider.maximumValue = 18;
Every time you retrieve the value of the slider, just multiply it by 10. This way the slider moves to 18 different locations (as you wanted), and you always get a multiple of 10.
int trueSliderValue = self.slider.value * 10;