如何防止滑块在边缘附近变“坏”

时间:2012-10-23 08:20:21

标签: objective-c uislider xcode4.5

我为滑块提供了滑块图片。

这是结果: enter image description here

然后在右边 enter image description here

所以你看,边缘变成了“盒子”而不是圆形。我真正想要的是与苹果提供的东西更接近的东西。这是我用来在使用自定义滑块图像和nil之间来回切换的代码:

- (IBAction)groupPinButton:(id)sender {
    self.groupPinButton.selected = ! self.groupPinButton.selected;
    UIImage *minImage = [[UIImage imageNamed:@"minimum_slider.png"]resizableImageWithCapInsets2:UIEdgeInsetsMake(0, 5, 0, 0)];
    UIImage *maxImage = [[UIImage imageNamed:@"maximum_slider.png"]resizableImageWithCapInsets2:UIEdgeInsetsMake(0, 0, 0, 5)];
    if (self.groupPinButton.selected)
    {


        [self.distanceSlider setMaximumTrackImage:maxImage forState:UIControlStateNormal];
        [self.distanceSlider setMinimumTrackImage:minImage forState:UIControlStateNormal];
    }
    else{

        [self.distanceSlider setMaximumTrackImage:nil forState:UIControlStateNormal];
        [self.distanceSlider setMinimumTrackImage:nil forState:UIControlStateNormal];
    }
}

如果我将maximumTrackImage设置为nil,则为截图:

enter image description here enter image description here

看起来好多了。但我想自定义。

我用于minimum_slider.png和maximum_slider.png的图片如下:

enter image description here enter image description here

你可以到达那里

http://i.stack.imgur.com/n30aw.png

http://i.stack.imgur.com/sF9SQ.png

注意另一边是好的。所以当滑块在任何地方,除了最大和最小的东西工作正常。如果滑块位于最大值,则最右边的角落会混乱。最左边的角落很好。

1 个答案:

答案 0 :(得分:2)

啊!我遇到了同样的问题。当你到达程序的末尾,并且滑块处于最大值时,整个轨迹图像现在是左侧,即示例中的“minimum_slider.png”。因此,“maximum_slider”图像的任何部分都没有显示(这会给你圆角的右边缘),只有“minimum_slider”的正方形右边。

我怀疑答案是让你的两个图像在两端都是圆形边,并在图形中间制作可扩展部分(边缘插图)。

我还没有这样做,因为我仍然对UIEdgeInsets的工作方式感到困惑(我发现文档很糟糕!),现在默认轨道对我来说已经足够了。所以,当你解决这个问题时,让我们都知道。