Как мне обновить свойство value UISlider после того, как его минимальное и максимальное значения были изменены (во время выполнения)?
Рассмотрим следующий код:
1 UILabel подключен к IBOutlet - этикетке
1 UISlider (настройки по умолчанию min = 0, max = 1) подключен к ползунку IBOutlet и IBAction - valueChanged
1 кнопка подключена к IBAction - buttonTouch
и следующие две реализации IBAction:
- (IBAction)valueChanged:(id)sender {
label.text=[NSString stringWithFormat:@"%f",slider.value];
}
- (IBAction)buttonTouch:(id)sender {
slider.maximumValue=4;
slider.minimumValue=2;
label.text=[NSString stringWithFormat:@"%f",slider.value];
}
Когда я перемещаю ползунок в определенное положение, он корректно обновляется.
Однако, когда я изменяю минимальные и максимальные значения ползунков, вызывая IBT-действие buttonTouch, свойство slider.value не изменяется - оно по-прежнему показывает старое значение (от 0 до 1). Таким образом, изменение минимальных и максимальных свойств не оказывает прямого влияния на свойство value.
До:
мин = 0 значение = 0,5 макс = 1
После того, как:
мин = 2 значение = 0,5 макс = 4
Это должно быть 3!
Полагаю, вы могли бы рассчитать новое значение на основе ваших знаний о значении, min и max для старой настройки и min и max для новой настройки, но это не кажется хорошим решением (см. Формулу ниже )
newValue=oldvalue/(oldmax-oldmin)*(newmax-newmin)+newmin
(сделал это из головы, надеюсь, я не испортил это;))
Есть что-то, что я пропустил? Не могу дождаться, чтобы прочитать ваши предложения! :) Спасибо.