5

有谁知道如何设置 a 的起始位置UISlider(理想情况下在中间)以及如何以十而不是十递增?

这是我到目前为止所得到的:

// Setup custom slider images
UIImage *minImage = [UIImage imageNamed:@"ins_blueTrack.png"];
UIImage *maxImage = [UIImage imageNamed:@"ins_whiteTrack.png"];
UIImage *tumbImage= [UIImage imageNamed:@"slide.png"];

minImage=[minImage stretchableImageWithLeftCapWidth:6.0 topCapHeight:0.0];
maxImage=[maxImage stretchableImageWithLeftCapWidth:6.0 topCapHeight:0.0];

// Setup the  slider
[self.slider setMinimumTrackImage:minImage forState:UIControlStateNormal];
[self.slider setMaximumTrackImage:maxImage forState:UIControlStateNormal];
[self.slider setThumbImage:tumbImage forState:UIControlStateNormal];

self.slider.minimumValue = 10;
self.slider.maximumValue = 180;
self.slider.continuous = YES;

int myVal = self.slider.value;
NSString *timeValue = [[NSString alloc] initWithFormat:@"%1d", myVal];

self.timeLabel.text = timeValue;

// Attach an action to sliding
[self.slider addTarget:self action:@selector(fxSliderAction) forControlEvents:UIControlEventValueChanged];
4

3 回答 3

4

设置滑块位置

根据您的代码,您可以拥有:

self.slider.value = (90);

self注意:当您IBOutlet从同一个类中引用时,没有真正的需要。

如果您想要一种真正动态的方式将 设置UISlider为中间标记,您只需将最大值除以 2,即可有效地将其减半:

self.slider.value = (self.slider.maximumValue / 2);

以 10 的倍数递增

为此,我建议与您目前拥有的略有不同。而不是最小 10 和最大 180,那么最小 1 和最大 18 呢?

self.slider.minimumValue = 1;
self.slider.maximumValue = 18;

每次检索滑块的值时,只需将其乘以 10。这样滑块会移动到 18 个不同的位置(如您所愿),并且您总是得到 10 的倍数。

int trueSliderValue = self.slider.value * 10;
于 2012-05-22T12:02:48.270 回答
1

如果您想要 UISlider 的起始位置(最好在中间),那么

slider.value = (slider.maximumValue / 2);

如果你想以 10 而不是 1 来增加它,那么你应该有那么多的最大值。现在在滑块值更改方法中检查当前滑块值的地板和天花板,然后将其设置为slider.value = new value

于 2012-05-22T11:45:53.110 回答
1

这应该准确地放置 UISlider 的中点,无论使用的是 minimumValue 还是 maximumValue。

slider.minimumValue = -10.0
slider.maximumValue = 1000.0
let trueMidPoint = ((slider.maximumValue-0)-(0-slider.minimumValue))/2
slider.value = trueMidPoint
于 2016-12-15T04:02:46.910 回答