2012-02-23 3 views
1

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

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

ответ

3

Расскажите бегунок, чтобы отправить действие на «Touch Up Inside» событие (UIControlEventTouchUpInside). Хук действие до этого метода:

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

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

+0

Wao .. !! Сделал чудеса. Спасибо Rob :) – Nitish

+0

+1: элегантный! :) –

+0

Привет @rob mayoff, Мог бы сказать, что у меня есть шкала, как 1-2-3-4-5 ... теперь изображение большого пальца должно перемещаться только до 2-4, а после 4 оно не должно двигаться в дальнейшем. – Srinivas

2

Bind этот метод слайдера измененное значение в строителем интерфейса

-(IBAction)sliderChanged:(id)sender { 

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

Это то, что я пробовал :) Это не дает упругого эффекта. – Nitish

+0

Hi NeverBe, Мог бы сказать, что у меня есть шкала, как 1-2-3-4-5 ... теперь изображение большого пальца должно перемещаться только до 2-4, а после 4 оно не должно двигаться дальше. – Srinivas

+0

Предельная шкала до 2-4 – NeverBe

2

Вы можете создать подкласс 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]; 
    } 
} 
+0

Привет, rokjarc, Мог бы сказать, у меня есть шкала, как 1-2-3-4-5 ... теперь изображение большого пальца должно перемещаться только до 2-4, а после 4 оно должно Не двигайся дальше. – Srinivas

+0

@sailaja: трудно добавить код в комментарий (а редактирование ответа на другой вопрос - не-go). В вашем случае я бы переопределил 'touchhesMoved:'. Там вы можете обеспечить минимальное и максимальное смещение ползунка. Что-то вроде 'if (self.value <2.0) [self setValue: 2.0]; else if (self.value> 4.0) [self setValue 4.0]; ' –

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