0

我将如何制作一个捕捉选择的滑块。我有3个选择,一个在左边,一个在右边,一个在中间。当用户将滑块向左拖动一点时,它将动画并捕捉到左侧的选择。右侧和中间的效果相同。

如果您熟悉应用程序 UBER,他们有一些东西(有 4 个部分)正是我所说的。此处的屏幕截图(底部的滑块): http://i.imgur.com/xTPfDcY.png

知道我将如何实现这一点吗?我应该使用 UISlider 还是不使用?

非常感谢,加布

4

2 回答 2

6

在不考虑 Uber 滑块的自定义外观的情况下,您可以通过侦听滑块上的 Touch Up Inside 事件(和 Touch Up Outside,为了完整起见)并将其值设置为最接近的整数来实现这种“动画捕捉”行为价值:

- (IBAction)sliderTouchUp:(UISlider *)sender
{
    [sender setValue:floorf([sender value] + 0.5) animated:YES];
}

将最小值设置为 1 并将最大值设置为 3 将在滑块上为您提供三个“停止”,当用户释放滑块时,它将动画到最近的停止。

于 2013-03-07T22:27:42.830 回答
1

基本思想是,当用户移动它时,您要查看滑块的当前值,如果它落在您的“捕捉”范围内,则将滑块的值设置为所需的位置。像这样的东西:

- (void)sliderUpdated:(UISlider *)slider {
    float val = slider.value;
    if (val>= 0.46 && val <= 0.54) {
        [slider setValue:0.5 animated:YES];
    }
}

显然,您将需要检查三个不同的范围。我发布的代码使滑块看起来中间有一个棘爪。您可能还需要跟踪滑块的移动方向,以便知道将滑块向左还是向右移动。

于 2013-03-07T22:36:41.563 回答