2013-02-15 17 views
6

Czy istnieje dobry sposób na odwrócenie wartości UISlider? Wartość domyślna to min po lewej i maks po prawej. Chciałbym, żeby działało w odwrotny sposób.Jak mogę odwrócić wartości min-max UISlider?

Obrócenie o 180 stopni wydaje się nieco głupie. Jakieś pomysły?

Dzięki!

Odpowiedz

7

Po prostu odejmij wartość od suwaka od wartości maksymalnej, która odwróci wartości.

+1

Cóż, odjąć od "wartości max", a nie "1" – borrrden

+0

@borrrden, tak, będę aktualizować - Byłem przy założeniu domyślnej skali od 0 do 1. – rdelmar

+1

FI: jeśli min. Wynosi 0,5, a maks. To 1,5. Wybraną wartością jest x, y jest odwrotnością, a następnie x + y = 2. Możesz więc obliczyć odwrotność tak: y = 2-x – Mrwolfy

2

Podklasa NSSlider/UISlider. Przestawianie tych dwóch metod w ten sposób -

//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]; 
} 

To odwróci wartości pozwalające prawo/góra pojawiać się jako minimum i lewej/dołu do pojawiają się jako maksymalną

3

I wtedy potrzebne dokładnie to samo co ty ... więc obróciłem go o kolejne 90 stopni, ustawiając go w pozycji do góry nogami. Suwak jest symetryczny, więc wygląda dokładnie tak samo w obu pozycjach. Ale wartości min i max są odwrotnie.

Command jest ...

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

Wystarczy odjąć suwak aktualną wartość z wartością max.

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

Twoja odpowiedź oszczędza mój czas. Dzięki –