Слайдер с реальным временем в Label - PullRequest
0 голосов
/ 26 декабря 2011

Мне нужен ползунок для отображения в реальном времени в виде ползунка с 12-00 до 11-45 вечера с размером шага 15 минут.Но я просто не знаю, как это сделать.Кто-нибудь может дать мне несколько советов?

Ответы [ 4 ]

2 голосов
/ 26 декабря 2011

Если вам просто нужен таймер с ползунком, используйте следующий код в обработчике sliderChanged:

- (IBAction)onSliderChange:(id)sender {

    UISlider *slider = (UISlider *)sender;

    NSUInteger numberOfSlots = 24*4 - 1; //total number of 15mins slots

    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"h-mm a"];

    NSDate *zeroDate = [dateFormatter dateFromString:@"12-00 AM"];

    NSUInteger actualSlot = roundf(numberOfSlots*slider.value);
    NSTimeInterval slotInterval = actualSlot * 15 * 60;

    NSDate *slotDate = [NSDate dateWithTimeInterval:slotInterval sinceDate:zeroDate];
    [dateFormatter setDateFormat:@"h-mm a"];

    self.timeLabel.text = [dateFormatter stringFromDate:slotDate];
}
0 голосов
/ 26 декабря 2011

Я добавляю другой ответ, чтобы добавить код. Да, вы можете получить значение из ползунка, а затем установить текст метки после преобразования значения во время. Вот так:

// Add 0.5 to slider value and truncate it to an integer by type casting it as integer
int sliderIntValue = (int)([sender value] + 0.5f);

//do some conversion and set the label to the value

self.sliderLabel.text = newLabelText;
0 голосов
/ 26 декабря 2011

Вы можете использовать NSTimer для вызова метода каждые 15 минут и обновления ползунка / метки с указанием текущего времени.

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

0 голосов
/ 26 декабря 2011

Создайте ползунок, и в контроллере вида измените метку ползунка при изменении значения на ползунке. Чтобы установить диапазон значений, измените диапазон в раскадровке под свойствами (вы также можете установить интервал изменения с шагом 15). Вы можете задать интервал в минутах или что-то подобное, а затем просто преобразовать его во время:)

- (IBAction)sliderChanged:(UISlider *)sender
...