ios устанавливает начальную позицию и приращение UISlider

Кто-нибудь знает, как установить начальную позицию UISlider (в идеале посередине), а также как увеличить ее на десятки вместо единиц?

Вот что у меня есть:

// 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];

person Luke Batley    schedule 22.05.2012    source источник


Ответы (3)


Настройка положения ползунка

В соответствии с вашим кодом вы могли бы:

self.slider.value = (90);

Примечание: нет необходимости в self, когда вы ссылаетесь на IBOutlet из того же класса.

Если вам нужен действительно динамичный способ установки UISlider на среднюю отметку, вы просто разделите максимальное значение на 2, фактически разделив его пополам:

self.slider.value = (self.slider.maximumValue / 2);

Увеличение кратно 10

Для этого я бы предложил что-то немного отличное от того, что у вас есть сейчас. Вместо минимума 10 и максимума 180, как насчет минимума 1 и максимума 18?

self.slider.minimumValue = 1;
self.slider.maximumValue = 18;

Каждый раз, когда вы получаете значение ползунка, просто умножайте его на 10. Таким образом, ползунок перемещается в 18 разных мест (как вы хотели), и вы всегда получаете число, кратное 10.

int trueSliderValue = self.slider.value * 10;
person Liam George Betsworth    schedule 22.05.2012
comment
@Liam: stackoverflow.com/questions/52987375/ Помогите мне здесь - person Abhishek Thapliyal; 25.10.2018

Если вам нужна начальная позиция UISlider (в идеале посередине), тогда

slider.value = (slider.maximumValue / 2);

если вы хотите увеличить его на 10 вместо единиц, тогда у вас должно быть столько максимального значения. Теперь в значении ползунка изменен метод проверки пола и потолка текущего значения ползунка, затем установите для него значение slider.value = новое значение.

person Paresh Navadiya    schedule 22.05.2012

Это должно точно разместить среднюю точку UISlider, независимо от используемого минимального или максимального значения.

slider.minimumValue = -10.0
slider.maximumValue = 1000.0
let trueMidPoint = ((slider.maximumValue-0)-(0-slider.minimumValue))/2
slider.value = trueMidPoint
person Stanley Yong    schedule 15.12.2016