【问题标题】:How to animate slider to marker in double side slider如何在双面滑块中将滑块设置为标记的动画
【发布时间】:2014-04-25 10:18:31
【问题描述】:

我必须使用双面滑块来获得最小值和最大值。

在最小值和最大值之间也有标记,如下图所示。

|--------|-----------|---------|

10      20          30        40  

当我在 10-20 之间拖动假设左 nob 时,如果 valuse 小于 15,则自动设置动画/移动到 10,但如果值大于 15,则它会自动移动/设置为 20。

我不知道如何移动/动画它。

我正在使用REDRangeSlider项目作为参考。

【问题讨论】:

标签: ios custom-controls uislider


【解决方案1】:

我已根据您的要求对代码进行了一些更改。请检查一下。

在分配初始化此控件时添加此方法。

[self.rangeSlider addTarget:self action:@selector(rangeSliderValueChanged:) forControlEvents:UIControlEventValueChanged];//This is already added.
[self.rangeSlider addTarget:self action:@selector(dragEnded:) forControlEvents:UIControlEventTouchUpOutside];//add this

实现该方法——拖拽结束时调用该方法。

-(void)dragEnded:(id)sender
{
    NSLog(@"called");
    //Set your Conditions this is for testing.
    if (self.rangeSlider.leftValue<15.0)
    {
        self.rangeSlider.leftValue = 10.0;
    }
}

在REDRangeSlider 类中勾选这两个处理Pan Gesture 状态的方法,所以当你拖动end 时,方法会调用这个手势状态。那时调用这个你集成到你的主类中的动作。

- (void)leftHandlePanEngadged:(UIGestureRecognizer *)gesture 
{
    else if (panGesture.state == UIGestureRecognizerStateCancelled ||
         panGesture.state == UIGestureRecognizerStateEnded ||
         panGesture.state == UIGestureRecognizerStateCancelled) {
        self.leftHandle.highlighted = NO;
        self.leftValue = [self roundValueToStepValue:self.leftValue];
        //Change below line For Left .
        [self sendActionsForControlEvents:UIControlEventTouchUpOutside];
    }
}
- (void)rightHandlePanEngadged:(UIGestureRecognizer *)gesture 
{
    UIPanGestureRecognizer *panGesture = (UIPanGestureRecognizer *)gesture;

     //Other code ........
    else if (panGesture.state == UIGestureRecognizerStateCancelled ||
         panGesture.state == UIGestureRecognizerStateEnded ||
         panGesture.state == UIGestureRecognizerStateCancelled) {
        self.rightHandle.highlighted = NO;
        self.rightValue = [self roundValueToStepValue:self.rightValue];
         //Change below line For right .
        [self sendActionsForControlEvents:UIControlEventTouchUpOutside];
    }
}

【讨论】:

  • 但是如果我拖到 3 就不会回到 0
  • 是什么意思?当你拖动结束时,我给了你单独的方法。你可以在那里设置你的条件。
  • 如果我的回答对你有帮助,那么你可以投票,接受这个作为这个问题的答案。 Happy Coding.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-18
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
相关资源
最近更新 更多