我将如何制作一个捕捉选择的滑块。我有3个选择,一个在左边,一个在右边,一个在中间。当用户将滑块向左拖动一点时,它将动画并捕捉到左侧的选择。右侧和中间的效果相同。
如果您熟悉应用程序 UBER,他们有一些东西(有 4 个部分)正是我所说的。此处的屏幕截图(底部的滑块):
知道我将如何实现这一点吗?我应该使用 UISlider 还是不使用?
非常感谢,加布
我将如何制作一个捕捉选择的滑块。我有3个选择,一个在左边,一个在右边,一个在中间。当用户将滑块向左拖动一点时,它将动画并捕捉到左侧的选择。右侧和中间的效果相同。
如果您熟悉应用程序 UBER,他们有一些东西(有 4 个部分)正是我所说的。此处的屏幕截图(底部的滑块):
知道我将如何实现这一点吗?我应该使用 UISlider 还是不使用?
非常感谢,加布
在不考虑 Uber 滑块的自定义外观的情况下,您可以通过侦听滑块上的 Touch Up Inside 事件(和 Touch Up Outside,为了完整起见)并将其值设置为最接近的整数来实现这种“动画捕捉”行为价值:
- (IBAction)sliderTouchUp:(UISlider *)sender
{
[sender setValue:floorf([sender value] + 0.5) animated:YES];
}
将最小值设置为 1 并将最大值设置为 3 将在滑块上为您提供三个“停止”,当用户释放滑块时,它将动画到最近的停止。
基本思想是,当用户移动它时,您要查看滑块的当前值,如果它落在您的“捕捉”范围内,则将滑块的值设置为所需的位置。像这样的东西:
- (void)sliderUpdated:(UISlider *)slider {
float val = slider.value;
if (val>= 0.46 && val <= 0.54) {
[slider setValue:0.5 animated:YES];
}
}
显然,您将需要检查三个不同的范围。我发布的代码使滑块看起来中间有一个棘爪。您可能还需要跟踪滑块的移动方向,以便知道将滑块向左还是向右移动。