有没有一种好的方法可以反转UISlider值?默认情况下,最小值在左侧,最大值在右侧。我希望它以相反的方式工作。
将其旋转180度似乎有点傻。有什么建议吗?
谢谢!
只需从滑块获得的值中减去最大值,即可颠倒数值。
我和你一样需要同样的东西...所以将其旋转了90度,放在倒置的位置上。滑块是对称的,所以两个位置看起来完全相同。但最小值和最大值现在是相反的。
命令是...
mySlider.transform = CGAffineTransformRotate(mySlider.transform, 180.0/180*M_PI);
180 / 180
是 1
,可以删除吗?你不知道弧度制吗?还需要垂直镜像滑块:slider.transform = slider.transform.scaledBy(x: 1, y: -1)
。 - meaning-matters您可以使用以下公式:
let sliderValue = yourSlider.minimumValue + yourSlider.maximumValue - yourSlider.value
将反转您的值。
子类化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];
}
yourSlider.semanticContentAttribute = .forceRightToLeft
只需将滑块当前值从最大值中减去即可。
label.text = [NSString stringWithFormat:@" %.f%% ", 100 - self.slider.value];
slider.maximumValue = -minimumValue;
slider.minimumValue = -maximumValue;
-(void) sliderChanged:(UISlider *) slider {
float value = -slider.value;
// do something with value
}
然后只需使用-slider.value。
您可以使用 transform (Swift 5.0) 简单地水平翻转滑块:
slider.transform = CGAffineTransform(scaleX: -1, y: 1);