如何反转 UISlider 的最小值-最大值?
Posted
技术标签:
【中文标题】如何反转 UISlider 的最小值-最大值?【英文标题】:How do I reverse UISlider's min-max values? 【发布时间】:2013-02-15 01:03:32 【问题描述】:有没有反转 UISlider 值的好方法?默认值是左侧的最小值和右侧的最大值。我希望它以相反的方式工作。
将其旋转 180 度似乎有点傻。有什么想法吗?
谢谢!
【问题讨论】:
【参考方案1】:只需从最大值中减去您从滑块中获得的值,这将使值反转。
【讨论】:
嗯,减去“最大值”,而不是“1” @borrrden,是的,我会更新——我假设默认比例为 0 到 1。 FI:如果您的最小值为 0.5,最大值为 1.5。选择的值是x,y是它的倒数,那么x+y=2。因此,您可以像这样计算反向:y=2−x 如果您的最小值不为零,则此答案会给出不正确的结果。请参阅我的answer below,它适用于非零滑块范围。 试试这个 - yourSlider.semanticContentAttribute = .forceRightToLeft 你会得到正确的最小-最大颜色。【参考方案2】:然后我需要和你完全相同的东西……所以将它再旋转 90 度,使其处于倒置位置。滑块是对称的,所以它在两个位置看起来完全一样。但是现在最小值和最大值正好相反。
命令是...
mySlider.transform = CGAffineTransformRotate(mySlider.transform, 180.0/180*M_PI);
【讨论】:
那个180 / 180
就是1
可以删除吗?你不知道弧度?也需要垂直镜像滑块:slider.transform = slider.transform.scaledBy(x: 1, y: -1)
.【参考方案3】:
子类 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];
这将反转允许右/上显示为最小值和左/下显示为最大值的值
【讨论】:
【参考方案4】:接受的答案不正确,因为它假定滑块的最小值为 0。
在我的例子中,我的最小值是 1.1,最大值是 8.0
您需要从 Min+Max 值中减去滑块的值以反转该值。
【讨论】:
【参考方案5】:您可以使用以下公式:
let sliderValue = yourSlider.minimumValue + yourSlider.maximumValue - yourSlider.value
会颠倒你的价值观。
【讨论】:
【参考方案6】:试试这条漂亮的线 -
yourSlider.semanticContentAttribute = .forceRightToLeft
这会改变最小-最大轨道颜色+反转值+您不会像转换答案那样丢失帧。
【讨论】:
【参考方案7】:只需从最大值中减去滑块当前值。
label.text = [NSString stringWithFormat:@" %.f%% ", 100 - self.slider.value];
【讨论】:
您的回答节省了我的时间。谢谢【参考方案8】:您可以简单地使用 transform (Swift 5.0) 水平翻转滑块:
slider.transform = CGAffineTransform(scaleX: -1, y: 1);
【讨论】:
【参考方案9】:这个怎么样:
slider.maximumValue = -minimumValue;
slider.minimumValue = -maximumValue;
-(void) sliderChanged:(UISlider *) slider
float value = -slider.value;
// do something with value
然后只需使用 -slider.value。
【讨论】:
以上是关于如何反转 UISlider 的最小值-最大值?的主要内容,如果未能解决你的问题,请参考以下文章