2012-01-03 2 views
1

Примечание: Я использую Monotouch.Использование UISlider as UISwitch (Два объекта состояния)

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

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

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

+0

Вы хотите, чтобы ползунок был пустым, чтобы представлять и представлять полный текст? Вы позволите им сдвинуть его или просто нажать? – Kekoa

+0

1-й вопрос: точно. Второй вопрос: возможно, просто нажмите, чтобы перейти в другое состояние (я думаю, это проще). –

ответ

4

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

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

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

UISlider *slider; 
[UIView animateWithDuration:0.2 // seconds 
       animations:^{ 
        slider.value = (YES) ? 1.0 : 0.0; // modify this line as appropriate 
       }]; 
+0

Знаете ли вы, как я могу сделать эту анимацию? Это что-то сделано в библиотеке объектов? –

+0

ответ добавлен в ответ: используйте '+ [UIView animateWithDuration: animations:]' – bshirley

1

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

выглядеть here

или coppied и вставили с этого поста:

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

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

+0

Разве это не просто растянуть масштаб? Я имею в виду, что он не использует целые числа, поэтому ваш слайдер будет возвращать диапазон значений от 0 до 1. Я думаю, что он хочет сделать его привязкой к 0 или 1. – Kekoa

+0

ya хороший момент, но я бы подумал, что вы могли бы округлить его или и если вы сделали это программно, он должен работать. но я havnt попробовал это, и возможно это не возможно. однако я не вижу другого способа добиться этого, кроме как заранее знать, что нужно, а затем загрузить слайдер или переключатель на основе ситуации. –

+0

Я просто интересовался функциональностью объекта UISlider. В противном случае, для взаимодействия с пользователем, я сделаю что-то вроде: Более 50% (отправить команду), менее 50% (команда отправки выключена). –

1

Я думаю, что вы хотите, чтобы ваш ползунок, чтобы привязать к 0 или 1. С помощью кода найден in this stackoverflow question и установить значения соответствующим образом. Смешное совпадение, я только что закончил кодирование этого для слайдера не 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; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^