7

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

将其旋转 180 度似乎有点傻。有任何想法吗?

谢谢!

4

9 回答 9

9

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

于 2013-02-15T01:07:35.760 回答
4

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

命令是...

mySlider.transform = CGAffineTransformRotate(mySlider.transform, 180.0/180*M_PI);
于 2015-04-04T09:54:27.640 回答
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];
}

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

于 2014-09-19T00:28:39.377 回答
2

接受的答案不正确,因为它假定滑块的最小值为 0。

就我而言,我的最小值是 1.1,最大值是 8.0

您需要从 Min+Max 值中减去滑块的值以反转该值。

于 2019-05-31T17:14:35.597 回答
2

您可以使用以下公式:

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

会颠倒你的价值观。

于 2020-03-03T11:18:49.740 回答
1

试试这条美丽的线 -

yourSlider.semanticContentAttribute = .forceRightToLeft

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

于 2019-07-17T16:53:54.590 回答
0

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

label.text = [NSString stringWithFormat:@" %.f%% ", 100 - self.slider.value];
于 2017-06-20T13:06:07.007 回答
0

您可以使用 transform (Swift 5.0) 简单地水平翻转滑块:

slider.transform = CGAffineTransform(scaleX: -1, y: 1);
于 2019-04-12T02:04:55.580 回答
0

这个怎么样:

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


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

      float value =  -slider.value;

      // do something with value

}

然后只需使用 -slider.value。

于 2019-04-17T04:49:34.647 回答