如何交换UISlider的最小值和最大值?

7

有没有一种好的方法可以反转UISlider值?默认情况下,最小值在左侧,最大值在右侧。我希望它以相反的方式工作。

将其旋转180度似乎有点傻。有什么建议吗?

谢谢!

9个回答

9

只需从滑块获得的值中减去最大值,即可颠倒数值。


1
好的,从“最大值”中减去,而不是“1”。 - borrrden
@borrrden,好的,我会更新--我假设默认比例为0到1。 - rdelmar
1
如果您的最小值为0.5,最大值为1.5。选择的值为x,y是它的相反数,则x+y=2。因此,您可以这样计算相反数:y=2-x。 - OWolf
如果您的最小值不为零,则此答案会给出错误的结果。请参阅我的下面的答案,该答案适用于非零滑块范围。 - Kashif
尝试使用以下代码替代 - yourSlider.semanticContentAttribute = .forceRightToLeft,这样你就可以正确获取最小和最大颜色。 - ozd

4

我和你一样需要同样的东西...所以将其旋转了90度,放在倒置的位置上。滑块是对称的,所以两个位置看起来完全相同。但最小值和最大值现在是相反的。

命令是...

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

那个 180 / 1801,可以删除吗?你不知道弧度制吗?还需要垂直镜像滑块:slider.transform = slider.transform.scaledBy(x: 1, y: -1) - meaning-matters

3

您可以使用以下公式:

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

将反转您的值。


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

这将倒转数值,使得右上角的值作为最小值,左下角的值作为最大值。

2
最初的回答是错误的,因为它假设滑块的最小值是0。
在我的情况下,我的最小值是1.1,最大值是8.0。
您需要从Min+Max值中减去滑块的值以反转值。

2
尝试这句优美的话 - "最初的回答"
yourSlider.semanticContentAttribute = .forceRightToLeft

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

0

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

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

你的回答节省了我的时间。谢谢。 - Sourabh Sharma

0
这样怎么样:
slider.maximumValue = -minimumValue;
slider.minimumValue = -maximumValue;


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

      float value =  -slider.value;

      // do something with value

}

然后只需使用-slider.value。


0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接