Использование UISlider в качестве UISwitch (Два объекта состояния) - PullRequest
1 голос
/ 03 января 2012

Примечание: я использую Monotouch.

Я хотел бы знать, есть ли способ использовать объект UISlider в качестве объекта UISwitch.Я имею в виду ... Я хочу использовать объект UISlider только в двух состояниях (100% или 0%), и я хочу заблокировать другие состояния для взаимодействия с пользователем.

Я пытаюсьСделайте это, потому что я разрабатываю программное обеспечение, и оно будет контролировать освещение некоторых модулей.Проблема в том, что есть модули с диммером (от 0% до 100%) и не диммерные модули (значение 0% или 100%), и мне нужна UISlider, работающая, как я упоминал ранее во втором случае.

Проблема с UISwitch заключается в том, что визуально это совершенно другой компонент, он не такой тонкий, как ползунок, и я не могу поставить значки, отображающие состояние ВКЛ и ВЫКЛ (рядом с ним, как на прилагаемой фотографии),Мне было интересно, что, возможно, пользовательский интерфейс будет беспорядок со слайдером и переключателями ...

Ответы [ 3 ]

4 голосов
/ 03 января 2012

Вы можете установить цель / действие UISlider и программно принудить его к одному из крайностей.

Я бы установил continuous на NO, а затем анимировал ползунок ближе к концу (чтобы сделать его более понятным для пользователя, что происходит).

Edit: на ваш вопрос, вот типичный механизм для анимации значения:

UISlider *slider;
[UIView animateWithDuration:0.2 // seconds
                 animations:^{
                   slider.value = (YES) ? 1.0 : 0.0; // modify this line as appropriate
                 }];
1 голос
/ 03 января 2012

Я думаю, что вы хотите, чтобы ваш ползунок привязывался к 0 или 1. Используйте код, найденный в этом вопросе о стековом потоке , и установите ваши значения соответствующим образом.Забавное совпадение, я только что закончил кодировать это для щелкающего слайдера не 10 минут назад.Чтобы сохранить клик, вот код, который вы хотите скопировать / вставить из этого вопроса:

-(IBAction)valueChanged:(id)sender {
    // This determines which "step" the slider should be on. Here we're taking 
    //   the current position of the slider and dividing by the `self.stepValue`
    //   to determine approximately which step we are on. Then we round to get to
    //   find which step we are closest to.
    float newStep = roundf((questionSlider.value) / self.stepValue);

    // Convert "steps" back to the context of the sliders values.
    self.questionSlider.value = newStep * self.stepValue;
}
1 голос
/ 03 января 2012

если вы используете IB, вы можете установить минимальное и максимальное значения для ползунка, поэтому используйте 0, 1 соответственно.или вы можете сделать это в коде, см. ниже:

посмотрите здесь

или скопированы и вставлены из этого поста:

UISlider* slider = [[UISlider alloc] init];
slider.minimumValue = -3.0f;
slider.maximumValue = 3.0f;

этозначение с плавающей запятой, следовательно, 3.0f loat

...