Эластичный эффект на UISlider на iPhone - PullRequest
1 голос
/ 23 февраля 2012

У меня четыре очка на UISlider на 0, 1, 2 и 3 . Я хочу, чтобы когда позиция большого пальца была от 0 до 1, она должна возвращаться к 0, но с эффектом упругости Похоже на 1-2, 2-3. Эта реализация даст мне преимущество в моем приложении.

Я попробовал это без эффекта упругости. Но это не выглядит хорошо.

Ответы [ 3 ]

3 голосов
/ 23 февраля 2012

Скажите ползунку, чтобы он отправил действие на событие «Touch Up Inside» (UIControlEventTouchUpInside).Подключите действие к этому методу:

- (IBAction)dragEndedWithSlider:(UISlider *)sender {
    CGFloat roundedValue = roundf(sender.value);
    [sender setValue:roundedValue animated:YES];
}

Вы можете использовать truncf вместо roundf, если вы действительно этого хотите.

2 голосов
/ 23 февраля 2012

Вы можете создать подкласс UISlider и добавить это:

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

    CGFloat floorValue = floor(self.value);

    if ((self.value - floorValue) > 0.5) {

        [self setValue: floorValue + 1.0 animated: YES];

    } else {

        [self setValue: floorValue animated: YES];
    }
}
2 голосов
/ 23 февраля 2012

Привязать этот метод к ползунку Значение, измененное в Интерфейсном конструкторе

   -(IBAction)sliderChanged:(id)sender {

        slider.value = (int)slider.value;
    }
...