如何反转UISlider的最小 - 最大值?

时间:2013-02-15 01:03:32

标签: ios uislider

有没有一种很好的方法来反转UISlider值?默认值为左侧的最小值和右侧的最大值。我希望它以相反的方式工作。

旋转180度似乎有点傻。有什么想法吗?

谢谢!

9 个答案:

答案 0 :(得分:8)

只需从最大值中减去滑块中的值,即可反转值。

答案 1 :(得分:4)

然后我需要与你完全相同的东西...所以将它再旋转90度,将其置于倒置​​位置。滑块是对称的,因此它在两个位置看起来完全相同。但是最小值和最大值现在正好相反。

命令是......

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

答案 2 :(得分:2)

子类NSSlider / UISlider。因此覆盖这两种方法 -

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

这将反转允许右/顶显示为最小值的值和左/底显示为最大值

答案 3 :(得分:2)

您可以使用以下公式:

let sliderValue = yourSlider.minimumValue + yourSlider.maximumValue - yourSlider.value

将颠倒您的价值观。

答案 4 :(得分:0)

只需从最大值中减去滑块当前值。

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

答案 5 :(得分:0)

您只需使用transform(Swift 5.0)即可水平翻转滑块:

slider.transform = CGAffineTransform(scaleX: -1, y: 1);

答案 6 :(得分:0)

如何?

slider.maximumValue = -minimumValue;
slider.minimumValue = -maximumValue;


-(void) sliderChanged:(UISlider *) slider {

      float value =  -slider.value;

      // do something with value

}

然后只使用-slider.value。

答案 7 :(得分:0)

可接受的答案是错误的,因为它假定滑块的Min值为0。

在我的情况下,我的最小值为1.1,最大值为8.0

您需要从最小值+最大值中减去滑块的值,以将其取反。

答案 8 :(得分:0)

试试这条漂亮的线-

yourSlider.semanticContentAttribute = .forceRightToLeft

这会更改最小-最大轨道颜色+反转值+您不会像变换答案中那样丢失帧。