2013-02-15 14 views
6

C'è un buon modo per invertire i valori di UISlider? L'impostazione predefinita è min a sinistra e max a destra. Mi piacerebbe che funzionasse nel modo opposto.Come si annullano i valori min-max di UISlider?

La rotazione di 180 gradi sembra un po 'sciocca. Qualche idea?

Grazie!

risposta

7

Basta sottrarre il valore ottenuto dal dispositivo di scorrimento dal valore massimo, che invertirà i valori.

+1

Beh, sottrarre "valore massimo", non "1" – borrrden

+0

@borrrden, sì, io aggiornare - stavo assumendo la scala di default 0 a 1. – rdelmar

+1

FI: se il tuo min è 0.5 e il tuo massimo è 1.5. Il valore selezionato è xey è il suo contrario, quindi x + y = 2. Quindi, puoi calcolare il contrario in questo modo: y = 2-x – Mrwolfy

2

Sottoclasse NSSlider/UISlider. Sovrascrivere questi due metodi in tal modo -

//Assumes minValue not necessarily 0.0 

-(double)doubleValue 
{ 

    double minVal = [self minValue]; 
    double maxVal = [self maxValue]; 

    double curValue = [super doubleValue]; 
    double reverseVal = maxVal - curValue + minVal; 
    return reverseVal; 
} 

-(void)setDoubleValue:(double)aDouble 
{ 

    double minVal = [self minValue]; 
    double maxVal = [self maxValue]; 

    double reverseVal = maxVal - aDouble + minVal; 

    [super setDoubleValue:reverseVal]; 
} 

Ciò invertire i valori che permettono destra/in alto di apparire come minimo e in basso a sinistra/di apparire come massima

3

poi mi serviva esattamente la stessa cosa di te ... così ruotato di altri 90 gradi posizionandolo in una posizione capovolta. Slider è simmetrico, quindi sembra esattamente lo stesso in entrambe le posizioni. Ma i valori minimo e massimo ora sono l'opposto.

Command è ...

mySlider.transform = CGAffineTransformRotate(mySlider.transform, 180.0/180*M_PI); 
0

Basta sottrarre cursore valore corrente dal valore massimo.

label.text = [NSString stringWithFormat:@" %.f%% ", 100 - self.slider.value]; 
+0

La tua risposta mi fa risparmiare tempo. Grazie –